{"cells":[{"cell_type":"code","execution_count":1,"metadata":{"collapsed":false,"id":"E4E3EFC045FF45DCB667D37773F3C22C","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"skip"},"tags":[],"trusted":true},"outputs":[],"source":["# # 如果没有安装 bokeh 可以将下面一行命令注释去掉之后并运行\n","# !pip install bokeh"]},{"cell_type":"markdown","metadata":{"collapsed":false,"id":"F137291B5A1B44C19CDEE83FC21439D4","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"source":["# Part4 | 扩展：Bokeh与Pyechart 的介绍与使用（上）"]},{"cell_type":"markdown","metadata":{"collapsed":false,"id":"FD09957990CB44BDBF2A46ACAE78BFA7","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"source":["## Bokeh 简介\n","\n","\n","![Image Name](https://raw.githubusercontent.com/bokeh/bokeh/branch-3.0/bokehjs/test/assets/images/logo.svg)\n","\n","- 发音：/ˈbəʊ.keɪ/，释义：散景（也就是通常摄影圈所说「景深」）\n","- 不仅适用于 Python，也可以在 **JavaScript** 中使用\n","- Bokeh 的用途：\n","  1. 创建标准的可交互式图形\n","  2. 创建信息量更为丰富的 [Dashborad APP](https://docs.bokeh.org/en/latest/docs/gallery.html#server-app-examples)（也叫数据看板或数据仪表板）"]},{"cell_type":"markdown","metadata":{"collapsed":false,"id":"4FF7D2A173CB4B8994FC428F121B68C8","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"source":["## 一个示例\n","\n","源：[Bokeh User Guide: Handling categorical data](https://docs.bokeh.org/en/latest/docs/user_guide/categorical.html#heatmaps)（代码略作修改）"]},{"cell_type":"code","execution_count":2,"metadata":{"collapsed":false,"id":"422E448F47A24D8AAA17704FFE6FE7EA","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"text/html":["\n","    <div class=\"bk-root\">\n","        <a href=\"https://bokeh.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n","        <span id=\"1002\">Loading BokehJS ...</span>\n","    </div>"]},"metadata":{},"output_type":"display_data"},{"data":{"application/javascript":"\n(function(root) {\n  function now() {\n    return new Date();\n  }\n\n  const force = true;\n\n  if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n    root._bokeh_onload_callbacks = [];\n    root._bokeh_is_loading = undefined;\n  }\n\n  const JS_MIME_TYPE = 'application/javascript';\n  const HTML_MIME_TYPE = 'text/html';\n  const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n  const CLASS_NAME = 'output_bokeh rendered_html';\n\n  /**\n   * Render data to the DOM node\n   */\n  function render(props, node) {\n    const script = document.createElement(\"script\");\n    node.appendChild(script);\n  }\n\n  /**\n   * Handle when an output is cleared or removed\n   */\n  function handleClearOutput(event, handle) {\n    const cell = handle.cell;\n\n    const id = cell.output_area._bokeh_element_id;\n    const server_id = cell.output_area._bokeh_server_id;\n    // Clean up Bokeh references\n    if (id != null && id in Bokeh.index) {\n      Bokeh.index[id].model.document.clear();\n      delete Bokeh.index[id];\n    }\n\n    if (server_id !== undefined) {\n      // Clean up Bokeh references\n      const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n      cell.notebook.kernel.execute(cmd_clean, {\n        iopub: {\n          output: function(msg) {\n            const id = msg.content.text.trim();\n            if (id in Bokeh.index) {\n              Bokeh.index[id].model.document.clear();\n              delete Bokeh.index[id];\n            }\n          }\n        }\n      });\n      // Destroy server and session\n      const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n      cell.notebook.kernel.execute(cmd_destroy);\n    }\n  }\n\n  /**\n   * Handle when a new output is added\n   */\n  function handleAddOutput(event, handle) {\n    const output_area = handle.output_area;\n    const output = handle.output;\n\n    // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n    if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n      return\n    }\n\n    const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n    if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n      toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n      // store reference to embed id on output_area\n      output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n    }\n    if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n      const bk_div = document.createElement(\"div\");\n      bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n      const script_attrs = bk_div.children[0].attributes;\n      for (let i = 0; i < script_attrs.length; i++) {\n        toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n        toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n      }\n      // store reference to server id on output_area\n      output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n    }\n  }\n\n  function register_renderer(events, OutputArea) {\n\n    function append_mime(data, metadata, element) {\n      // create a DOM node to render to\n      const toinsert = this.create_output_subarea(\n        metadata,\n        CLASS_NAME,\n        EXEC_MIME_TYPE\n      );\n      this.keyboard_manager.register_events(toinsert);\n      // Render to node\n      const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n      render(props, toinsert[toinsert.length - 1]);\n      element.append(toinsert);\n      return toinsert\n    }\n\n    /* Handle when an output is cleared or removed */\n    events.on('clear_output.CodeCell', handleClearOutput);\n    events.on('delete.Cell', handleClearOutput);\n\n    /* Handle when a new output is added */\n    events.on('output_added.OutputArea', handleAddOutput);\n\n    /**\n     * Register the mime type and append_mime function with output_area\n     */\n    OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n      /* Is output safe? */\n      safe: true,\n      /* Index of renderer in `output_area.display_order` */\n      index: 0\n    });\n  }\n\n  // register the mime type if in Jupyter Notebook environment and previously unregistered\n  if (root.Jupyter !== undefined) {\n    const events = require('base/js/events');\n    const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n      register_renderer(events, OutputArea);\n    }\n  }\n\n  \n  if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n    root._bokeh_timeout = Date.now() + 5000;\n    root._bokeh_failed_load = false;\n  }\n\n  const NB_LOAD_WARNING = {'data': {'text/html':\n     \"<div style='background-color: #fdd'>\\n\"+\n     \"<p>\\n\"+\n     \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n     \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n     \"</p>\\n\"+\n     \"<ul>\\n\"+\n     \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n     \"<li>use INLINE resources instead, as so:</li>\\n\"+\n     \"</ul>\\n\"+\n     \"<code>\\n\"+\n     \"from bokeh.resources import INLINE\\n\"+\n     \"output_notebook(resources=INLINE)\\n\"+\n     \"</code>\\n\"+\n     \"</div>\"}};\n\n  function display_loaded() {\n    const el = document.getElementById(\"1002\");\n    if (el != null) {\n      el.textContent = \"BokehJS is loading...\";\n    }\n    if (root.Bokeh !== undefined) {\n      if (el != null) {\n        el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n      }\n    } else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(display_loaded, 100)\n    }\n  }\n\n\n  function run_callbacks() {\n    try {\n      root._bokeh_onload_callbacks.forEach(function(callback) {\n        if (callback != null)\n          callback();\n      });\n    } finally {\n      delete root._bokeh_onload_callbacks\n    }\n    console.debug(\"Bokeh: all callbacks have finished\");\n  }\n\n  function load_libs(css_urls, js_urls, callback) {\n    if (css_urls == null) css_urls = [];\n    if (js_urls == null) js_urls = [];\n\n    root._bokeh_onload_callbacks.push(callback);\n    if (root._bokeh_is_loading > 0) {\n      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n      return null;\n    }\n    if (js_urls == null || js_urls.length === 0) {\n      run_callbacks();\n      return null;\n    }\n    console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n    root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n    function on_load() {\n      root._bokeh_is_loading--;\n      if (root._bokeh_is_loading === 0) {\n        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n        run_callbacks()\n      }\n    }\n\n    function on_error(url) {\n      console.error(\"failed to load \" + url);\n    }\n\n    for (let i = 0; i < css_urls.length; i++) {\n      const url = css_urls[i];\n      const element = document.createElement(\"link\");\n      element.onload = on_load;\n      element.onerror = on_error.bind(null, url);\n      element.rel = \"stylesheet\";\n      element.type = \"text/css\";\n      element.href = url;\n      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n      document.body.appendChild(element);\n    }\n\n    for (let i = 0; i < js_urls.length; i++) {\n      const url = js_urls[i];\n      const element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error.bind(null, url);\n      element.async = false;\n      element.src = url;\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n  };\n\n  function inject_raw_css(css) {\n    const element = document.createElement(\"style\");\n    element.appendChild(document.createTextNode(css));\n    document.body.appendChild(element);\n  }\n\n  \n  const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n  const css_urls = [];\n  \n\n  const inline_js = [\n    function(Bokeh) {\n      Bokeh.set_log_level(\"info\");\n    },\n    function(Bokeh) {\n    \n    \n    }\n  ];\n\n  function run_inline_js() {\n    \n    if (root.Bokeh !== undefined || force === true) {\n      \n    for (let i = 0; i < inline_js.length; i++) {\n      inline_js[i].call(root, root.Bokeh);\n    }\n    if (force === true) {\n        display_loaded();\n      }} else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(run_inline_js, 100);\n    } else if (!root._bokeh_failed_load) {\n      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n      root._bokeh_failed_load = true;\n    } else if (force !== true) {\n      const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n      cell.output_area.append_execute_result(NB_LOAD_WARNING)\n    }\n\n  }\n\n  if (root._bokeh_is_loading === 0) {\n    console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n    run_inline_js();\n  } else {\n    load_libs(css_urls, js_urls, function() {\n      console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n      run_inline_js();\n    });\n  }\n}(window));","application/vnd.bokehjs_load.v0+json":""},"metadata":{},"output_type":"display_data"}],"source":["from bokeh.io import output_notebook, show\n","from bokeh.models import ColumnDataSource\n","from bokeh.plotting import figure\n","from bokeh.sampledata.periodic_table import elements\n","from bokeh.transform import dodge, factor_cmap\n","\n","output_notebook()"]},{"cell_type":"code","execution_count":3,"metadata":{"collapsed":false,"id":"80F04D375AC448EB85CCB7BB08ABC994","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>atomic number</th>\n","      <th>symbol</th>\n","      <th>name</th>\n","      <th>atomic mass</th>\n","      <th>CPK</th>\n","      <th>electronic configuration</th>\n","      <th>electronegativity</th>\n","      <th>atomic radius</th>\n","      <th>ion radius</th>\n","      <th>van der Waals radius</th>\n","      <th>...</th>\n","      <th>EA</th>\n","      <th>standard state</th>\n","      <th>bonding type</th>\n","      <th>melting point</th>\n","      <th>boiling point</th>\n","      <th>density</th>\n","      <th>metal</th>\n","      <th>year discovered</th>\n","      <th>group</th>\n","      <th>period</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>1</td>\n","      <td>H</td>\n","      <td>Hydrogen</td>\n","      <td>1.00794</td>\n","      <td>#FFFFFF</td>\n","      <td>1s1</td>\n","      <td>2.20</td>\n","      <td>37.0</td>\n","      <td>NaN</td>\n","      <td>120.0</td>\n","      <td>...</td>\n","      <td>-73.0</td>\n","      <td>gas</td>\n","      <td>diatomic</td>\n","      <td>14.0</td>\n","      <td>20.0</td>\n","      <td>0.00009</td>\n","      <td>nonmetal</td>\n","      <td>1766</td>\n","      <td>1</td>\n","      <td>1</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>2</td>\n","      <td>He</td>\n","      <td>Helium</td>\n","      <td>4.002602</td>\n","      <td>#D9FFFF</td>\n","      <td>1s2</td>\n","      <td>NaN</td>\n","      <td>32.0</td>\n","      <td>NaN</td>\n","      <td>140.0</td>\n","      <td>...</td>\n","      <td>0.0</td>\n","      <td>gas</td>\n","      <td>atomic</td>\n","      <td>NaN</td>\n","      <td>4.0</td>\n","      <td>0.00000</td>\n","      <td>noble gas</td>\n","      <td>1868</td>\n","      <td>18</td>\n","      <td>1</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>3</td>\n","      <td>Li</td>\n","      <td>Lithium</td>\n","      <td>6.941</td>\n","      <td>#CC80FF</td>\n","      <td>[He] 2s1</td>\n","      <td>0.98</td>\n","      <td>134.0</td>\n","      <td>76 (+1)</td>\n","      <td>182.0</td>\n","      <td>...</td>\n","      <td>-60.0</td>\n","      <td>solid</td>\n","      <td>metallic</td>\n","      <td>454.0</td>\n","      <td>1615.0</td>\n","      <td>0.54000</td>\n","      <td>alkali metal</td>\n","      <td>1817</td>\n","      <td>1</td>\n","      <td>2</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>4</td>\n","      <td>Be</td>\n","      <td>Beryllium</td>\n","      <td>9.012182</td>\n","      <td>#C2FF00</td>\n","      <td>[He] 2s2</td>\n","      <td>1.57</td>\n","      <td>90.0</td>\n","      <td>45 (+2)</td>\n","      <td>NaN</td>\n","      <td>...</td>\n","      <td>0.0</td>\n","      <td>solid</td>\n","      <td>metallic</td>\n","      <td>1560.0</td>\n","      <td>2743.0</td>\n","      <td>1.85000</td>\n","      <td>alkaline earth metal</td>\n","      <td>1798</td>\n","      <td>2</td>\n","      <td>2</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>5</td>\n","      <td>B</td>\n","      <td>Boron</td>\n","      <td>10.811</td>\n","      <td>#FFB5B5</td>\n","      <td>[He] 2s2 2p1</td>\n","      <td>2.04</td>\n","      <td>82.0</td>\n","      <td>27 (+3)</td>\n","      <td>NaN</td>\n","      <td>...</td>\n","      <td>-27.0</td>\n","      <td>solid</td>\n","      <td>covalent network</td>\n","      <td>2348.0</td>\n","      <td>4273.0</td>\n","      <td>2.46000</td>\n","      <td>metalloid</td>\n","      <td>1807</td>\n","      <td>13</td>\n","      <td>2</td>\n","    </tr>\n","  </tbody>\n","</table>\n","<p>5 rows × 21 columns</p>\n","</div>"],"text/plain":["   atomic number symbol       name atomic mass      CPK  \\\n","0              1      H   Hydrogen     1.00794  #FFFFFF   \n","1              2     He     Helium    4.002602  #D9FFFF   \n","2              3     Li    Lithium       6.941  #CC80FF   \n","3              4     Be  Beryllium    9.012182  #C2FF00   \n","4              5      B      Boron      10.811  #FFB5B5   \n","\n","  electronic configuration  electronegativity  atomic radius ion radius  \\\n","0                      1s1               2.20           37.0        NaN   \n","1                      1s2                NaN           32.0        NaN   \n","2                 [He] 2s1               0.98          134.0    76 (+1)   \n","3                 [He] 2s2               1.57           90.0    45 (+2)   \n","4             [He] 2s2 2p1               2.04           82.0    27 (+3)   \n","\n","   van der Waals radius  ...    EA  standard state      bonding type  \\\n","0                 120.0  ... -73.0             gas          diatomic   \n","1                 140.0  ...   0.0             gas            atomic   \n","2                 182.0  ... -60.0           solid          metallic   \n","3                   NaN  ...   0.0           solid          metallic   \n","4                   NaN  ... -27.0           solid  covalent network   \n","\n","  melting point  boiling point  density                 metal year discovered  \\\n","0          14.0           20.0  0.00009              nonmetal            1766   \n","1           NaN            4.0  0.00000             noble gas            1868   \n","2         454.0         1615.0  0.54000          alkali metal            1817   \n","3        1560.0         2743.0  1.85000  alkaline earth metal            1798   \n","4        2348.0         4273.0  2.46000             metalloid            1807   \n","\n","  group period  \n","0     1      1  \n","1    18      1  \n","2     1      2  \n","3     2      2  \n","4    13      2  \n","\n","[5 rows x 21 columns]"]},"execution_count":3,"metadata":{},"output_type":"execute_result"}],"source":["periods = [\"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\"]\n","groups = [str(x) for x in range(1, 19)]\n","elements.head()"]},{"cell_type":"code","execution_count":4,"metadata":{"collapsed":false,"id":"EFEF185E81694820ABC1E35AF63C5FA1","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>atomic number</th>\n","      <th>symbol</th>\n","      <th>name</th>\n","      <th>atomic mass</th>\n","      <th>CPK</th>\n","      <th>electronic configuration</th>\n","      <th>electronegativity</th>\n","      <th>atomic radius</th>\n","      <th>ion radius</th>\n","      <th>van der Waals radius</th>\n","      <th>...</th>\n","      <th>EA</th>\n","      <th>standard state</th>\n","      <th>bonding type</th>\n","      <th>melting point</th>\n","      <th>boiling point</th>\n","      <th>density</th>\n","      <th>metal</th>\n","      <th>year discovered</th>\n","      <th>group</th>\n","      <th>period</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>1</td>\n","      <td>H</td>\n","      <td>Hydrogen</td>\n","      <td>1.00794</td>\n","      <td>#FFFFFF</td>\n","      <td>1s1</td>\n","      <td>2.20</td>\n","      <td>37.0</td>\n","      <td>NaN</td>\n","      <td>120.0</td>\n","      <td>...</td>\n","      <td>-73.0</td>\n","      <td>gas</td>\n","      <td>diatomic</td>\n","      <td>14.0</td>\n","      <td>20.0</td>\n","      <td>0.00009</td>\n","      <td>nonmetal</td>\n","      <td>1766</td>\n","      <td>1</td>\n","      <td>I</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>2</td>\n","      <td>He</td>\n","      <td>Helium</td>\n","      <td>4.002602</td>\n","      <td>#D9FFFF</td>\n","      <td>1s2</td>\n","      <td>NaN</td>\n","      <td>32.0</td>\n","      <td>NaN</td>\n","      <td>140.0</td>\n","      <td>...</td>\n","      <td>0.0</td>\n","      <td>gas</td>\n","      <td>atomic</td>\n","      <td>NaN</td>\n","      <td>4.0</td>\n","      <td>0.00000</td>\n","      <td>noble gas</td>\n","      <td>1868</td>\n","      <td>18</td>\n","      <td>I</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>3</td>\n","      <td>Li</td>\n","      <td>Lithium</td>\n","      <td>6.941</td>\n","      <td>#CC80FF</td>\n","      <td>[He] 2s1</td>\n","      <td>0.98</td>\n","      <td>134.0</td>\n","      <td>76 (+1)</td>\n","      <td>182.0</td>\n","      <td>...</td>\n","      <td>-60.0</td>\n","      <td>solid</td>\n","      <td>metallic</td>\n","      <td>454.0</td>\n","      <td>1615.0</td>\n","      <td>0.54000</td>\n","      <td>alkali metal</td>\n","      <td>1817</td>\n","      <td>1</td>\n","      <td>II</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>4</td>\n","      <td>Be</td>\n","      <td>Beryllium</td>\n","      <td>9.012182</td>\n","      <td>#C2FF00</td>\n","      <td>[He] 2s2</td>\n","      <td>1.57</td>\n","      <td>90.0</td>\n","      <td>45 (+2)</td>\n","      <td>NaN</td>\n","      <td>...</td>\n","      <td>0.0</td>\n","      <td>solid</td>\n","      <td>metallic</td>\n","      <td>1560.0</td>\n","      <td>2743.0</td>\n","      <td>1.85000</td>\n","      <td>alkaline earth metal</td>\n","      <td>1798</td>\n","      <td>2</td>\n","      <td>II</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>5</td>\n","      <td>B</td>\n","      <td>Boron</td>\n","      <td>10.811</td>\n","      <td>#FFB5B5</td>\n","      <td>[He] 2s2 2p1</td>\n","      <td>2.04</td>\n","      <td>82.0</td>\n","      <td>27 (+3)</td>\n","      <td>NaN</td>\n","      <td>...</td>\n","      <td>-27.0</td>\n","      <td>solid</td>\n","      <td>covalent network</td>\n","      <td>2348.0</td>\n","      <td>4273.0</td>\n","      <td>2.46000</td>\n","      <td>metalloid</td>\n","      <td>1807</td>\n","      <td>13</td>\n","      <td>II</td>\n","    </tr>\n","  </tbody>\n","</table>\n","<p>5 rows × 21 columns</p>\n","</div>"],"text/plain":["   atomic number symbol       name atomic mass      CPK  \\\n","0              1      H   Hydrogen     1.00794  #FFFFFF   \n","1              2     He     Helium    4.002602  #D9FFFF   \n","2              3     Li    Lithium       6.941  #CC80FF   \n","3              4     Be  Beryllium    9.012182  #C2FF00   \n","4              5      B      Boron      10.811  #FFB5B5   \n","\n","  electronic configuration  electronegativity  atomic radius ion radius  \\\n","0                      1s1               2.20           37.0        NaN   \n","1                      1s2                NaN           32.0        NaN   \n","2                 [He] 2s1               0.98          134.0    76 (+1)   \n","3                 [He] 2s2               1.57           90.0    45 (+2)   \n","4             [He] 2s2 2p1               2.04           82.0    27 (+3)   \n","\n","   van der Waals radius  ...    EA  standard state      bonding type  \\\n","0                 120.0  ... -73.0             gas          diatomic   \n","1                 140.0  ...   0.0             gas            atomic   \n","2                 182.0  ... -60.0           solid          metallic   \n","3                   NaN  ...   0.0           solid          metallic   \n","4                   NaN  ... -27.0           solid  covalent network   \n","\n","  melting point  boiling point  density                 metal year discovered  \\\n","0          14.0           20.0  0.00009              nonmetal            1766   \n","1           NaN            4.0  0.00000             noble gas            1868   \n","2         454.0         1615.0  0.54000          alkali metal            1817   \n","3        1560.0         2743.0  1.85000  alkaline earth metal            1798   \n","4        2348.0         4273.0  2.46000             metalloid            1807   \n","\n","  group period  \n","0     1      I  \n","1    18      I  \n","2     1     II  \n","3     2     II  \n","4    13     II  \n","\n","[5 rows x 21 columns]"]},"execution_count":4,"metadata":{},"output_type":"execute_result"}],"source":["df = (\n","    elements.copy()\n","    .astype({\"atomic mass\": \"str\", \"group\": \"str\"})\n","    .assign(\n","        period=lambda d: [periods[x - 1] for x in d.period]\n","    )\n","    .loc[\n","        (elements.group != \"-\")\n","        & ~(elements.symbol.str.contains('L[ru]'))\n","    ]\n",")\n","\n","df.head()"]},{"cell_type":"code","execution_count":5,"metadata":{"collapsed":false,"id":"5DCC3D45B61148319133DBC68197FF55","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["color_mapper = {\n","    \"alkali metal\": \"#a6cee3\",\n","    \"alkaline earth metal\": \"#1f78b4\",\n","    \"metal\": \"#d93b43\",\n","    \"halogen\": \"#999d9a\",\n","    \"metalloid\": \"#e08d49\",\n","    \"noble gas\": \"#eaeaea\",\n","    \"nonmetal\": \"#f1d4Af\",\n","    \"transition metal\": \"#599d7A\",\n","}\n","\n","source = ColumnDataSource(df)\n","\n","class Property(dict):\n","    def __init__(\n","        self,\n","        y,\n","        x=None,\n","        source=source,\n","        text_align=\"left\",\n","        text_baseline=\"middle\",\n","        text_font_size=\"16px\",\n","        text_font_style=\"normal\",\n","    ) -> None:\n","        super().__init__(\n","            y=y,\n","            x=x or dodge(\"group\", -0.4, range=p.x_range),\n","            source=source,\n","            text_align=text_align,\n","            text_baseline=text_baseline,\n","            text_font_size={\"value\": text_font_size},\n","            text_font_style=text_font_style,\n","        )\n","\n"]},{"cell_type":"code","execution_count":6,"metadata":{"collapsed":false,"id":"D1BE52BB10A4469EAC5FDA61A37DF56B","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["p = figure(\n","    width=900,\n","    height=500,\n","    title=\"Periodic table (omitting LA and AC series)\",\n","    x_range=groups,\n","    y_range=list(reversed(periods)),\n","    toolbar_location=None,\n","    tools=\"hover\",\n",")\n","\n","props = {\n","    \"atomic number\": Property(\n","        y=dodge(\"period\", 0.3, range=p.y_range), text_font_size=\"11px\"\n","    ),\n","    \"symbol\": Property(y=\"period\", text_font_style=\"bold\"),\n","    \"atomic mass\": Property(y=dodge(\"period\", -0.2, range=p.y_range), text_font_size=\"7px\"),\n","    \"name\": Property(y=dodge(\"period\", -0.35, range=p.y_range), text_font_size=\"7px\"),\n","}\n"]},{"cell_type":"code","execution_count":7,"metadata":{"collapsed":false,"id":"20A93F139B0645A9AF67D22B23A10616","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":["WARNING:bokeh.core.validation.check:W-1000 (MISSING_RENDERERS): Plot has no renderers: Figure(id='1004', ...)\n"]},{"data":{"text/html":["\n","\n","\n","\n","\n","\n","  <div class=\"bk-root\" id=\"c1bc685e-1a90-41fc-956a-217c254e3563\" data-root-id=\"1004\"></div>\n"]},"metadata":{},"output_type":"display_data"},{"data":{"application/javascript":"(function(root) {\n  function embed_document(root) {\n    \n  const docs_json = {\"2cdab979-5469-460d-99c7-e0f63eead656\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1015\"}],\"center\":[{\"id\":\"1017\"},{\"id\":\"1020\"}],\"height\":500,\"left\":[{\"id\":\"1018\"}],\"title\":{\"id\":\"1005\"},\"toolbar\":{\"id\":\"1022\"},\"toolbar_location\":null,\"width\":900,\"x_range\":{\"id\":\"1007\"},\"x_scale\":{\"id\":\"1011\"},\"y_range\":{\"id\":\"1009\"},\"y_scale\":{\"id\":\"1013\"}},\"id\":\"1004\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1033\"},\"group\":null,\"major_label_policy\":{\"id\":\"1034\"},\"ticker\":{\"id\":\"1019\"}},\"id\":\"1018\",\"type\":\"CategoricalAxis\"},{\"attributes\":{},\"id\":\"1036\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1019\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"factors\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\"]},\"id\":\"1007\",\"type\":\"FactorRange\"},{\"attributes\":{\"tools\":[{\"id\":\"1021\"}]},\"id\":\"1022\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"1015\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1017\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1016\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"1021\",\"type\":\"HoverTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1036\"},\"group\":null,\"major_label_policy\":{\"id\":\"1037\"},\"ticker\":{\"id\":\"1016\"}},\"id\":\"1015\",\"type\":\"CategoricalAxis\"},{\"attributes\":{},\"id\":\"1011\",\"type\":\"CategoricalScale\"},{\"attributes\":{},\"id\":\"1034\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1033\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1037\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1018\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Periodic table (omitting LA and AC series)\"},\"id\":\"1005\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"factors\":[\"VII\",\"VI\",\"V\",\"IV\",\"III\",\"II\",\"I\"]},\"id\":\"1009\",\"type\":\"FactorRange\"}],\"root_ids\":[\"1004\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n  const render_items = [{\"docid\":\"2cdab979-5469-460d-99c7-e0f63eead656\",\"root_ids\":[\"1004\"],\"roots\":{\"1004\":\"c1bc685e-1a90-41fc-956a-217c254e3563\"}}];\n  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n\n  }\n  if (root.Bokeh !== undefined) {\n    embed_document(root);\n  } else {\n    let attempts = 0;\n    const timer = setInterval(function(root) {\n      if (root.Bokeh !== undefined) {\n        clearInterval(timer);\n        embed_document(root);\n      } else {\n        attempts++;\n        if (attempts > 100) {\n          clearInterval(timer);\n          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n        }\n      }\n    }, 10, root)\n  }\n})(window);","application/vnd.bokehjs_exec.v0+json":""},"metadata":{"application/vnd.bokehjs_exec.v0+json":{"id":"1004"}},"output_type":"display_data"}],"source":["show(p)"]},{"cell_type":"code","execution_count":8,"metadata":{"collapsed":false,"id":"81CCA92A342F44CC96C89DB9A5A528E9","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"text/html":["\n","\n","\n","\n","\n","\n","  <div class=\"bk-root\" id=\"7ab8d15b-f62b-4366-9fec-59001e2ddd68\" data-root-id=\"1004\"></div>\n"]},"metadata":{},"output_type":"display_data"},{"data":{"application/javascript":"(function(root) {\n  function embed_document(root) {\n    \n  const docs_json = {\"c5692147-1b6c-4ed4-9c96-5b54202eacbc\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1015\"}],\"center\":[{\"id\":\"1017\"},{\"id\":\"1020\"},{\"id\":\"1098\"}],\"height\":500,\"left\":[{\"id\":\"1018\"}],\"outline_line_color\":null,\"renderers\":[{\"id\":\"1078\"},{\"id\":\"1122\"},{\"id\":\"1137\"},{\"id\":\"1152\"},{\"id\":\"1167\"},{\"id\":\"1182\"}],\"title\":{\"id\":\"1005\"},\"toolbar\":{\"id\":\"1022\"},\"toolbar_location\":null,\"width\":900,\"x_range\":{\"id\":\"1007\"},\"x_scale\":{\"id\":\"1011\"},\"y_range\":{\"id\":\"1009\"},\"y_scale\":{\"id\":\"1013\"}},\"id\":\"1004\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1003\"}},\"id\":\"1079\",\"type\":\"CDSView\"},{\"attributes\":{\"axis_line_color\":null,\"coordinates\":null,\"formatter\":{\"id\":\"1033\"},\"group\":null,\"major_label_policy\":{\"id\":\"1034\"},\"major_label_standoff\":0,\"major_tick_line_color\":null,\"ticker\":{\"id\":\"1019\"}},\"id\":\"1018\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1108\"}],\"location\":\"top_center\",\"orientation\":\"horizontal\"},\"id\":\"1098\",\"type\":\"Legend\"},{\"attributes\":{\"factors\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\"]},\"id\":\"1007\",\"type\":\"FactorRange\"},{\"attributes\":{\"tools\":[{\"id\":\"1021\"}]},\"id\":\"1022\",\"type\":\"Toolbar\"},{\"attributes\":{\"range\":{\"id\":\"1009\"},\"value\":0.3},\"id\":\"1024\",\"type\":\"Dodge\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"metal\",\"transform\":{\"id\":\"1073\"}},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"field\":\"metal\",\"transform\":{\"id\":\"1073\"}},\"height\":{\"value\":0.95},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"field\":\"metal\",\"transform\":{\"id\":\"1073\"}},\"width\":{\"value\":0.95},\"x\":{\"field\":\"group\"},\"y\":{\"field\":\"period\"}},\"id\":\"1076\",\"type\":\"Rect\"},{\"attributes\":{\"axis\":{\"id\":\"1015\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1017\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1016\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1011\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.6},\"fill_color\":{\"field\":\"metal\",\"transform\":{\"id\":\"1073\"}},\"hatch_color\":{\"field\":\"metal\",\"transform\":{\"id\":\"1073\"}},\"height\":{\"value\":0.95},\"line_color\":{\"field\":\"metal\",\"transform\":{\"id\":\"1073\"}},\"width\":{\"value\":0.95},\"x\":{\"field\":\"group\"},\"y\":{\"field\":\"period\"}},\"id\":\"1075\",\"type\":\"Rect\"},{\"attributes\":{\"text\":{\"field\":\"symbol\"},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_style\":{\"value\":\"bold\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1026\"}},\"y\":{\"field\":\"period\"}},\"id\":\"1134\",\"type\":\"Text\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"metal\",\"transform\":{\"id\":\"1073\"}},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"field\":\"metal\",\"transform\":{\"id\":\"1073\"}},\"height\":{\"value\":0.95},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"field\":\"metal\",\"transform\":{\"id\":\"1073\"}},\"width\":{\"value\":0.95},\"x\":{\"field\":\"group\"},\"y\":{\"field\":\"period\"}},\"id\":\"1077\",\"type\":\"Rect\"},{\"attributes\":{\"text\":{\"field\":\"name\"},\"text_alpha\":{\"value\":0.1},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"7px\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1030\"}},\"y\":{\"field\":\"period\",\"transform\":{\"id\":\"1029\"}}},\"id\":\"1165\",\"type\":\"Text\"},{\"attributes\":{\"range\":{\"id\":\"1007\"},\"value\":-0.4},\"id\":\"1025\",\"type\":\"Dodge\"},{\"attributes\":{\"text\":{\"field\":\"symbol\"},\"text_alpha\":{\"value\":0.2},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_style\":{\"value\":\"bold\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1026\"}},\"y\":{\"field\":\"period\"}},\"id\":\"1136\",\"type\":\"Text\"},{\"attributes\":{},\"id\":\"1036\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1178\"},\"glyph\":{\"id\":\"1179\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1181\"},\"nonselection_glyph\":{\"id\":\"1180\"},\"view\":{\"id\":\"1183\"}},\"id\":\"1182\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1088\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1178\"}},\"id\":\"1183\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1087\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"text_align\":{\"value\":\"center\"},\"text_alpha\":{\"value\":0.1},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1180\",\"type\":\"Text\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1003\"},\"glyph\":{\"id\":\"1075\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1077\"},\"nonselection_glyph\":{\"id\":\"1076\"},\"view\":{\"id\":\"1079\"}},\"id\":\"1078\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1034\",\"type\":\"AllLabels\"},{\"attributes\":{\"factors\":[\"alkali metal\",\"alkaline earth metal\",\"metal\",\"halogen\",\"metalloid\",\"noble gas\",\"nonmetal\",\"transition metal\"],\"palette\":[\"#a6cee3\",\"#1f78b4\",\"#d93b43\",\"#999d9a\",\"#e08d49\",\"#eaeaea\",\"#f1d4Af\",\"#599d7A\"]},\"id\":\"1073\",\"type\":\"CategoricalColorMapper\"},{\"attributes\":{\"text\":{\"field\":\"atomic number\"},\"text_alpha\":{\"value\":0.2},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"11px\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1025\"}},\"y\":{\"field\":\"period\",\"transform\":{\"id\":\"1024\"}}},\"id\":\"1121\",\"type\":\"Text\"},{\"attributes\":{},\"id\":\"1033\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{\"text\":{\"field\":\"atomic mass\"},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"7px\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1028\"}},\"y\":{\"field\":\"period\",\"transform\":{\"id\":\"1027\"}}},\"id\":\"1149\",\"type\":\"Text\"},{\"attributes\":{\"text\":{\"field\":\"atomic number\"},\"text_alpha\":{\"value\":0.1},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"11px\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1025\"}},\"y\":{\"field\":\"period\",\"transform\":{\"id\":\"1024\"}}},\"id\":\"1120\",\"type\":\"Text\"},{\"attributes\":{\"range\":{\"id\":\"1009\"},\"value\":-0.35},\"id\":\"1029\",\"type\":\"Dodge\"},{\"attributes\":{},\"id\":\"1193\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1003\"},\"glyph\":{\"id\":\"1134\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1136\"},\"nonselection_glyph\":{\"id\":\"1135\"},\"view\":{\"id\":\"1138\"}},\"id\":\"1137\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"text_align\":{\"value\":\"center\"},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1179\",\"type\":\"Text\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1003\"},\"glyph\":{\"id\":\"1149\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1151\"},\"nonselection_glyph\":{\"id\":\"1150\"},\"view\":{\"id\":\"1153\"}},\"id\":\"1152\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"1003\"}},\"id\":\"1138\",\"type\":\"CDSView\"},{\"attributes\":{\"text\":{\"field\":\"atomic mass\"},\"text_alpha\":{\"value\":0.2},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"7px\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1028\"}},\"y\":{\"field\":\"period\",\"transform\":{\"id\":\"1027\"}}},\"id\":\"1151\",\"type\":\"Text\"},{\"attributes\":{},\"id\":\"1019\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"text\":{\"field\":\"name\"},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"7px\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1030\"}},\"y\":{\"field\":\"period\",\"transform\":{\"id\":\"1029\"}}},\"id\":\"1164\",\"type\":\"Text\"},{\"attributes\":{\"data\":{\"CPK\":[\"#FFFFFF\",\"#D9FFFF\",\"#CC80FF\",\"#C2FF00\",\"#FFB5B5\",\"#909090\",\"#3050F8\",\"#FF0D0D\",\"#90E050\",\"#B3E3F5\",\"#AB5CF2\",\"#8AFF00\",\"#BFA6A6\",\"#F0C8A0\",\"#FF8000\",\"#FFFF30\",\"#1FF01F\",\"#80D1E3\",\"#8F40D4\",\"#3DFF00\",\"#E6E6E6\",\"#BFC2C7\",\"#A6A6AB\",\"#8A99C7\",\"#9C7AC7\",\"#E06633\",\"#F090A0\",\"#50D050\",\"#C88033\",\"#7D80B0\",\"#C28F8F\",\"#668F8F\",\"#BD80E3\",\"#FFA100\",\"#A62929\",\"#5CB8D1\",\"#702EB0\",\"#00FF00\",\"#94FFFF\",\"#94E0E0\",\"#73C2C9\",\"#54B5B5\",\"#3B9E9E\",\"#248F8F\",\"#0A7D8C\",\"#006985\",\"#C0C0C0\",\"#FFD98F\",\"#A67573\",\"#668080\",\"#9E63B5\",\"#D47A00\",\"#940094\",\"#429EB0\",\"#57178F\",\"#00C900\",\"#4DC2FF\",\"#4DA6FF\",\"#2194D6\",\"#267DAB\",\"#266696\",\"#175487\",\"#D0D0E0\",\"#FFD123\",\"#B8B8D0\",\"#A6544D\",\"#575961\",\"#9E4FB5\",\"#AB5C00\",\"#754F45\",\"#428296\",\"#420066\",\"#007D00\",\"#CC0059\",\"#D1004F\",\"#D90045\",\"#E00038\",\"#E6002E\",\"#EB0026\",\"#FF1493\",\"#FF1493\",\"#FF1493\",\"#FF1493\",\"#FF1493\",\"#FF1493\",\"#FF1493\",\"#FF1493\",\"#FF1493\"],\"EA\":{\"__ndarray__\":\"AAAAAABAUsAAAAAAAAAAAAAAAAAAAE7AAAAAAAAAAAAAAAAAAAA7wAAAAAAAQGPAAAAAAAAAHMAAAAAAAKBhwAAAAAAAgHTAAAAAAAAAAAAAAAAAAIBKwAAAAAAAAAAAAAAAAACARcAAAAAAAMBgwAAAAAAAAFLAAAAAAAAAacAAAAAAANB1wAAAAAAAAAAAAAAAAAAASMAAAAAAAAAAwAAAAAAAADLAAAAAAAAAIMAAAAAAAIBJwAAAAAAAAFDAAAAAAAAAAAAAAAAAAAAwwAAAAAAAAFDAAAAAAAAAXMAAAAAAAIBdwAAAAAAAAAAAAAAAAAAAPcAAAAAAAMBdwAAAAAAAgFPAAAAAAABgaMAAAAAAAFB0wAAAAAAAAAAAAAAAAACAR8AAAAAAAAAUwAAAAAAAAD7AAAAAAACARMAAAAAAAIBVwAAAAAAAAFLAAAAAAACASsAAAAAAAEBZwAAAAAAAgFvAAAAAAAAAS8AAAAAAAIBfwAAAAAAAAAAAAAAAAAAAPcAAAAAAAMBawAAAAAAAwFnAAAAAAADAZ8AAAAAAAHBywAAAAAAAAAAAAAAAAAAAR8AAAAAAAAAswAAAAAAAAAAAAAAAAAAAP8AAAAAAAMBTwAAAAAAAAC7AAAAAAACAWsAAAAAAAOBiwAAAAAAAoGnAAAAAAADga8AAAAAAAAAAAAAAAAAAADPAAAAAAACAQcAAAAAAAMBWwAAAAAAA4GbAAAAAAADgcMAAAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[88]},\"IE-1\":{\"__ndarray__\":\"AAAAAACAlEAAAAAAAIiiQAAAAAAAQIBAAAAAAAAgjEAAAAAAAAiJQAAAAAAA/JBAAAAAAADolUAAAAAAAIiUQAAAAAAARJpAAAAAAABCoEAAAAAAAAB/QAAAAAAAEIdAAAAAAAAQgkAAAAAAAJiIQAAAAAAAoI9AAAAAAABAj0AAAAAAAIyTQAAAAAAAxJdAAAAAAAAwekAAAAAAAHCCQAAAAAAAyINAAAAAAACYhEAAAAAAAFiEQAAAAAAAaIRAAAAAAABohkAAAAAAANiHQAAAAAAAwIdAAAAAAAAIh0AAAAAAAFCHQAAAAAAAUIxAAAAAAAAYgkAAAAAAANCHQAAAAAAAmI1AAAAAAABojUAAAAAAANCRQAAAAAAAHJVAAAAAAAAweUAAAAAAADCBQAAAAAAAwIJAAAAAAAAAhEAAAAAAAGCEQAAAAAAAYIVAAAAAAADwhUAAAAAAADCGQAAAAAAAgIZAAAAAAAAgiUAAAAAAANiGQAAAAAAAIItAAAAAAABwgUAAAAAAACiGQAAAAAAAEIpAAAAAAAAoi0AAAAAAAICPQAAAAAAASJJAAAAAAACAd0AAAAAAAHB/QAAAAAAAmIRAAAAAAADIh0AAAAAAABCIQAAAAAAAwIdAAAAAAABAikAAAAAAAICLQAAAAAAAMItAAAAAAADQi0AAAAAAAHiPQAAAAAAAaIJAAAAAAABghkAAAAAAAPiFQAAAAAAAYIlAAAAAAADAjEAAAAAAADSQQAAAAAAAwHdAAAAAAADQf0AAAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[88]},\"atomic mass\":[\"1.00794\",\"4.002602\",\"6.941\",\"9.012182\",\"10.811\",\"12.0107\",\"14.0067\",\"15.9994\",\"18.9984032\",\"20.1797\",\"22.98976928\",\"24.3050\",\"26.9815386\",\"28.0855\",\"30.973762\",\"32.065\",\"35.453\",\"39.948\",\"39.0983\",\"40.078\",\"44.955912\",\"47.867\",\"50.9415\",\"51.9961\",\"54.938045\",\"55.845\",\"58.933195\",\"58.6934\",\"63.546\",\"65.38\",\"69.723\",\"72.64\",\"74.92160\",\"78.96\",\"79.904\",\"83.798\",\"85.4678\",\"87.62\",\"88.90585\",\"91.224\",\"92.90638\",\"95.96\",\"[98]\",\"101.07\",\"102.90550\",\"106.42\",\"107.8682\",\"112.411\",\"114.818\",\"118.710\",\"121.760\",\"127.60\",\"126.90447\",\"131.293\",\"132.9054519\",\"137.327\",\"178.49\",\"180.94788\",\"183.84\",\"186.207\",\"190.23\",\"192.217\",\"195.084\",\"196.966569\",\"200.59\",\"204.3833\",\"207.2\",\"208.98040\",\"[209]\",\"[210]\",\"[222]\",\"[223]\",\"[226]\",\"[267]\",\"[268]\",\"[271]\",\"[272]\",\"[270]\",\"[276]\",\"[281]\",\"[280]\",\"[285]\",\"[284]\",\"[289]\",\"[288]\",\"[293]\",\"[294]\",\"[294]\"],\"atomic number\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118],\"atomic radius\":{\"__ndarray__\":\"AAAAAACAQkAAAAAAAABAQAAAAAAAwGBAAAAAAACAVkAAAAAAAIBUQAAAAAAAQFNAAAAAAADAUkAAAAAAAEBSQAAAAAAAwFFAAAAAAABAUUAAAAAAAEBjQAAAAAAAQGBAAAAAAACAXUAAAAAAAMBbQAAAAAAAgFpAAAAAAACAWUAAAAAAAMBYQAAAAAAAQFhAAAAAAACAaEAAAAAAAMBlQAAAAAAAAGJAAAAAAAAAYUAAAAAAAEBfQAAAAAAAwF9AAAAAAABgYUAAAAAAAEBfQAAAAAAAgF9AAAAAAABAXkAAAAAAAEBhQAAAAAAAYGBAAAAAAACAX0AAAAAAAIBeQAAAAAAAwF1AAAAAAAAAXUAAAAAAAIBcQAAAAAAAgFtAAAAAAABgakAAAAAAAABoQAAAAAAAQGRAAAAAAACAYkAAAAAAACBhQAAAAAAAIGJAAAAAAACAY0AAAAAAAIBfQAAAAAAA4GBAAAAAAABgYEAAAAAAACBjQAAAAAAAgGJAAAAAAAAAYkAAAAAAAKBhQAAAAAAAQGFAAAAAAADgYEAAAAAAAKBgQAAAAAAAQGBAAAAAAAAgbEAAAAAAAMBoQAAAAAAAwGJAAAAAAABAYUAAAAAAAEBiQAAAAAAA4GNAAAAAAAAAYEAAAAAAACBhQAAAAAAAAGBAAAAAAAAAYkAAAAAAAKBiQAAAAAAAgGJAAAAAAABgYkAAAAAAAEBiQAAAAAAAAPh/AAAAAAAA+H8AAAAAACBiQAAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[88]},\"boiling point\":{\"__ndarray__\":\"AAAAAAAANEAAAAAAAAAQQAAAAAAAPJlAAAAAAABupUAAAAAAALGwQAAAAAAAzLBAAAAAAABAU0AAAAAAAIBWQAAAAAAAQFVAAAAAAAAAO0AAAAAAABCSQAAAAAAATJVAAAAAAADQpUAAAAAAAMqoQAAAAAAAUIFAAAAAAABwhkAAAAAAAOBtQAAAAAAAwFVAAAAAAAAgkEAAAAAAAHSbQAAAAAAAPqhAAAAAAADQq0AAAAAAAMCsQAAAAAAAAKdAAAAAAAA8okAAAAAAAHyoQAAAAAAAAKlAAAAAAADkqEAAAAAAAACpQAAAAAAAcJJAAAAAAABao0AAAAAAACqoQAAAAAAAuItAAAAAAADwjUAAAAAAAMB0QAAAAAAAAF5AAAAAAAAIjkAAAAAAANyZQAAAAAAARKxAAAAAAABKskAAAAAAAJmzQAAAAAAAMLNAAAAAAAC6sUAAAAAAAEexQAAAAAAAAK9AAAAAAABIqUAAAAAAAAajQAAAAAAAQJBAAAAAAABSokAAAAAAAHamQAAAAAAAEJ1AAAAAAAC0k0AAAAAAAJB8QAAAAAAAoGRAAAAAAACAjUAAAAAAAL6gQAAAAAAADLNAAAAAAABjtkAAAAAAAMS2QAAAAAAA7bZAAAAAAACltEAAAAAAAF2yQAAAAAAAArBAAAAAAAByqEAAAAAAALCDQAAAAAAASJtAAAAAAACYn0AAAAAAALScQAAAAAAATJNAAAAAAAAA+H8AAAAAAGBqQAAAAAAAAPh/AAAAAABon0AAAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[88]},\"bonding type\":[\"diatomic\",\"atomic\",\"metallic\",\"metallic\",\"covalent network\",\"covalent network\",\"diatomic\",\"diatomic\",\"atomic\",\"atomic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"covalent network\",\"covalent network\",\"covalent network\",\"atomic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"covalent network\",\"atomic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"covalent network\",\"atomic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"metallic\",\"covalent network\",\"atomic\",\"metallic\",\"metallic\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\"],\"density\":{\"__ndarray__\":\"4yZZPRaRFz8AAAAAAAAAAEjhehSuR+E/mpmZmZmZ/T+uR+F6FK4DQBSuR+F6FAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK16NwPQrvP9ejcD0K1/s/mpmZmZmZBUCkcD0K16MCQB+F61G4Hv0/XI/C9Shc/z8AAAAAAAAAAAAAAAAAAAAAhetRuB6F6z/NzMzMzMz4P+xRuB6F6wdACtejcD0KEkBxPQrXo3AYQI/C9ShcjxxA4XoUrkfhHUB7FK5H4XofQM3MzMzMzCFAUrgehevRIUDXo3A9CtchQI/C9ShcjxxAmpmZmZmZF0BI4XoUrkcVQOxRuB6F6xZASOF6FK5HE0D2KFyPwvUIQAAAAAAAAAAAexSuR+F6+D8K16NwPQoFQOF6FK5H4RFACtejcD0KGkCkcD0K1yMhQI/C9ShcjyRAAAAAAAAAJ0A9CtejcL0oQGZmZmZm5ihACtejcD0KKEB7FK5H4fokQM3MzMzMTCFAPQrXo3A9HUA9CtejcD0dQM3MzMzMzBpA9ihcj8L1GEDD9Shcj8ITQHsUrkfheoQ/FK5H4XoU/j8UrkfhehQMQB+F61G4nipAZmZmZmamMEAAAAAAAEAzQIXrUbgeBTVA16NwPQqXNkCPwvUoXI82QNejcD0KFzVAzczMzMxMM0CPwvUoXA8rQDMzMzMzsydArkfhehSuJkCPwvUoXI8jQGZmZmZmZiJAAAAAAAAA+H97FK5H4XqEPwAAAAAAAPh/AAAAAAAAFEAAAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[88]},\"electronegativity\":{\"__ndarray__\":\"mpmZmZmZAUAAAAAAAAD4f1yPwvUoXO8/H4XrUbge+T9SuB6F61EAQGZmZmZmZgRAUrgehetRCECF61G4HoULQNejcD0K1w9AAAAAAAAA+H/D9Shcj8LtP/YoXI/C9fQ/w/UoXI/C+T9mZmZmZmb+P4XrUbgehQFApHA9CtejBEBI4XoUrkcJQAAAAAAAAPh/PQrXo3A96j8AAAAAAADwP8P1KFyPwvU/pHA9Ctej+D8UrkfhehT6P4/C9Shcj/o/zczMzMzM+D9I4XoUrkf9PxSuR+F6FP4/j8L1KFyP/j9mZmZmZmb+P2ZmZmZmZvo/9ihcj8L1/D8UrkfhehQAQHE9CtejcAFAZmZmZmZmBECuR+F6FK4HQAAAAAAAAPh/PQrXo3A96j9mZmZmZmbuP4XrUbgehfM/SOF6FK5H9T+amZmZmZn5P0jhehSuRwFAZmZmZmZm/j+amZmZmZkBQD0K16NwPQJAmpmZmZmZAUDhehSuR+H+PwrXo3A9Cvs/exSuR+F6/D9cj8L1KFz/P2ZmZmZmZgBAzczMzMzMAEBI4XoUrkcFQAAAAAAAAPh/SOF6FK5H6T97FK5H4XrsP83MzMzMzPQ/AAAAAAAA+D/hehSuR+ECQGZmZmZmZv4/mpmZmZmZAUCamZmZmZkBQD0K16NwPQJAUrgehetRBEAAAAAAAAAAQFK4HoXrUQBApHA9CtejAkApXI/C9SgAQAAAAAAAAABAmpmZmZmZAUAAAAAAAAD4f2ZmZmZmZuY/zczMzMzM7D8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[88]},\"electronic configuration\":[\"1s1\",\"1s2\",\"[He] 2s1\",\"[He] 2s2\",\"[He] 2s2 2p1\",\"[He] 2s2 2p2\",\"[He] 2s2 2p3\",\"[He] 2s2 2p4\",\"[He] 2s2 2p5\",\"[He] 2s2 2p6\",\"[Ne] 3s1\",\"[Ne] 3s2\",\"[Ne] 3s2 3p1\",\"[Ne] 3s2 3p2\",\"[Ne] 3s2 3p3\",\"[Ne] 3s2 3p4\",\"[Ne] 3s2 3p5\",\"[Ne] 3s2 3p6\",\"[Ar] 4s1\",\"[Ar] 4s2\",\"[Ar] 3d1 4s2\",\"[Ar] 3d2 4s2\",\"[Ar] 3d3 4s2\",\"[Ar] 3d5 4s1\",\"[Ar] 3d5 4s2\",\"[Ar] 3d6 4s2\",\"[Ar] 3d7 4s2\",\"[Ar] 3d8 4s2\",\"[Ar] 3d10 4s1\",\"[Ar] 3d10 4s2\",\"[Ar] 3d10 4s2 4p1\",\"[Ar] 3d10 4s2 4p2\",\"[Ar] 3d10 4s2 4p3\",\"[Ar] 3d10 4s2 4p4\",\"[Ar] 3d10 4s2 4p5\",\"[Ar] 3d10 4s2 4p6\",\"[Kr] 5s1\",\"[Kr] 5s2\",\"[Kr] 4d1 5s2\",\"[Kr] 4d2 5s2\",\"[Kr] 4d4 5s1\",\"[Kr] 4d5 5s1\",\"[Kr] 4d5 5s2\",\"[Kr] 4d7 5s1\",\"[Kr] 4d8 5s1\",\"[Kr] 4d10\",\"[Kr] 4d10 5s1\",\"[Kr] 4d10 5s2\",\"[Kr] 4d10 5s2 5p1\",\"[Kr] 4d10 5s2 5p2\",\"[Kr] 4d10 5s2 5p3\",\"[Kr] 4d10 5s2 5p4\",\"[Kr] 4d10 5s2 5p5\",\"[Kr] 4d10 5s2 5p6\",\"[Xe] 6s1\",\"[Xe] 6s2\",\"[Xe] 4f14 5d2 6s2\",\"[Xe] 4f14 5d3 6s2\",\"[Xe] 4f14 5d4 6s2\",\"[Xe] 4f14 5d5 6s2\",\"[Xe] 4f14 5d6 6s2\",\"[Xe] 4f14 5d7 6s2\",\"[Xe] 4f14 5d9 6s1\",\"[Xe] 4f14 5d10 6s1\",\"[Xe] 4f14 5d10 6s2\",\"[Xe] 4f14 5d10 6s2 6p1\",\"[Xe] 4f14 5d10 6s2 6p2\",\"[Xe] 4f14 5d10 6s2 6p3\",\"[Xe] 4f14 5d10 6s2 6p4\",\"[Xe] 4f14 5d10 6s2 6p5\",\"[Xe] 4f14 5d10 6s2 6p6\",\"[Rn] 7s1\",\"[Rn] 7s2\",\"[Rn] 5f14 6d2 7s2\",\"[Rn].5f14.6d3.7s2\",\"[Rn].5f14.6d4.7s2\",\"[Rn].5f14.6d5.7s2\",\"[Rn].5f14.6d6.7s2\",\"[Rn].5f14.6d7.7s2\",\"[Rn].5f14.6d9.7s1\",\"[Rn].5f14.6d10.7s1\",\"[Rn].5f14.6d10.7s2\",\"[Rn].5f14.6d10.7s2.7p1\",\"[Rn].5f14.6d10.7s2.7p2\",\"[Rn].5f14.6d10.7s2.7p3\",\"[Rn].5f14.6d10.7s2.7p4\",\"[Rn].5f14.6d10.7s2.7p5\",\"[Rn].5f14.6d10.7s2.7p6\"],\"group\":[\"1\",\"18\",\"1\",\"2\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"1\",\"2\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"1\",\"2\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"1\",\"2\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\"],\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117],\"ion radius\":[\"NaN\",\"NaN\",\"76 (+1)\",\"45 (+2)\",\"27 (+3)\",\"16 (+4)\",\"146 (-3)\",\"140 (-2)\",\"133 (-1)\",\"NaN\",\"102 (+1)\",\"72 (+2)\",\"53.5 (+3)\",\"40 (+4)\",\"44 (+3)\",\"184 (-2)\",\"181 (-1)\",\"NaN\",\"138 (+1)\",\"100 (+2)\",\"74.5 (+3)\",\"86 (+2)\",\"79 (+2)\",\"80 (+2*)\",\"67 (+2)\",\"78 (+2*)\",\"74.5 (+2*)\",\"69 (+2)\",\"77 (+1)\",\"74 (+2)\",\"62 (+3)\",\"73 (+2)\",\"58 (+3)\",\"198 (-2)\",\"196 (-1)\",\"NaN\",\"152 (+1)\",\"118 (+2)\",\"90 (+3)\",\"72 (+4)\",\"72 (+3)\",\"69 (+3)\",\"64.5 (+4)\",\"68 (+3)\",\"66.5 (+3)\",\"59 (+1)\",\"115 (+1)\",\"95 (+2)\",\"80 (+3)\",\"112 (+2)\",\"76 (+3)\",\"221 (-2)\",\"220 (-1)\",\"48 (+8)\",\"167 (+1)\",\"135 (+2)\",\"71 (+4)\",\"72 (+3)\",\"66 (+4)\",\"63 (+4)\",\"63 (+4)\",\"68 (+3)\",\"86 (+2)\",\"137 (+1)\",\"119 (+1)\",\"150 (+1)\",\"119 (+2)\",\"103 (+3)\",\"94 (+4)\",\"62 (+7)\",\"NaN\",\"180 (+1)\",\"148 (+2)\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\"],\"melting point\":{\"__ndarray__\":\"AAAAAAAALEAAAAAAAAD4fwAAAAAAYHxAAAAAAABgmEAAAAAAAFiiQAAAAAAA3q1AAAAAAACAT0AAAAAAAIBLQAAAAAAAAEtAAAAAAAAAOUAAAAAAADB3QAAAAAAA2IxAAAAAAAAojUAAAAAAAFyaQAAAAAAA0HNAAAAAAABAeEAAAAAAAIBlQAAAAAAAAFVAAAAAAAAQdUAAAAAAAGyRQAAAAAAAWJxAAAAAAABUnkAAAAAAAA6hQAAAAAAACKFAAAAAAAC8l0AAAAAAAEycQAAAAAAAoJtAAAAAAAAAm0AAAAAAADiVQAAAAAAAqIVAAAAAAADwckAAAAAAAOySQAAAAAAACJFAAAAAAADgfkAAAAAAAKBwQAAAAAAAAF1AAAAAAACAc0AAAAAAAGiQQAAAAAAAHJxAAAAAAACgoEAAAAAAAHylQAAAAAAAoKZAAAAAAAD8okAAAAAAAF6kQAAAAAAAeqFAAAAAAACQnEAAAAAAAEyTQAAAAAAAkIJAAAAAAADgekAAAAAAAJB/QAAAAAAAQIxAAAAAAACYhkAAAAAAADB4QAAAAAAAIGRAAAAAAADgckAAAAAAAECPQAAAAAAAlKNAAAAAAAC0qUAAAAAAAN6sQAAAAAAABqtAAAAAAADUqUAAAAAAAGalQAAAAAAA5J9AAAAAAADklEAAAAAAAEBtQAAAAAAACIJAAAAAAADIgkAAAAAAAACBQAAAAAAAeIBAAAAAAAD4gUAAAAAAAEBpQAAAAAAAAPh/AAAAAABojkAAAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[88]},\"metal\":[\"nonmetal\",\"noble gas\",\"alkali metal\",\"alkaline earth metal\",\"metalloid\",\"nonmetal\",\"nonmetal\",\"nonmetal\",\"halogen\",\"noble gas\",\"alkali metal\",\"alkaline earth metal\",\"metal\",\"metalloid\",\"nonmetal\",\"nonmetal\",\"halogen\",\"noble gas\",\"alkali metal\",\"alkaline earth metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"metal\",\"metalloid\",\"metalloid\",\"nonmetal\",\"halogen\",\"noble gas\",\"alkali metal\",\"alkaline earth metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"metal\",\"metal\",\"metalloid\",\"metalloid\",\"halogen\",\"noble gas\",\"alkali metal\",\"alkaline earth metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"metal\",\"metal\",\"metal\",\"metalloid\",\"halogen\",\"noble gas\",\"alkali metal\",\"alkaline earth metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"transition metal\",\"metal\",\"metal\",\"metal\",\"metal\",\"halogen\",\"noble gas\"],\"name\":[\"Hydrogen\",\"Helium\",\"Lithium\",\"Beryllium\",\"Boron\",\"Carbon\",\"Nitrogen\",\"Oxygen\",\"Fluorine\",\"Neon\",\"Sodium\",\"Magnesium\",\"Aluminum\",\"Silicon\",\"Phosphorus\",\"Sulfur\",\"Chlorine\",\"Argon\",\"Potassium\",\"Calcium\",\"Scandium\",\"Titanium\",\"Vanadium\",\"Chromium\",\"Manganese\",\"Iron\",\"Cobalt\",\"Nickel\",\"Copper\",\"Zinc\",\"Gallium\",\"Germanium\",\"Arsenic\",\"Selenium\",\"Bromine\",\"Krypton\",\"Rubidium\",\"Strontium\",\"Yttrium\",\"Zirconium\",\"Niobium\",\"Molybdenum\",\"Technetium\",\"Ruthenium\",\"Rhodium\",\"Palladium\",\"Silver\",\"Cadmium\",\"Indium\",\"Tin\",\"Antimony\",\"Tellurium\",\"Iodine\",\"Xenon\",\"Cesium\",\"Barium\",\"Hafnium\",\"Tantalum\",\"Tungsten\",\"Rhenium\",\"Osmium\",\"Iridium\",\"Platinum\",\"Gold\",\"Mercury\",\"Thallium\",\"Lead\",\"Bismuth\",\"Polonium\",\"Astatine\",\"Radon\",\"Francium\",\"Radium\",\"Rutherfordium\",\"Dubnium\",\"Seaborgium\",\"Bohrium\",\"Hassium\",\"Meitnerium\",\"Darmstadtium\",\"Roentgenium\",\"Copernicium\",\"Nihomium\",\"Flerovium\",\"Moscovium\",\"Livermorium\",\"Tennessine\",\"Oganesson\"],\"period\":[\"I\",\"I\",\"II\",\"II\",\"II\",\"II\",\"II\",\"II\",\"II\",\"II\",\"III\",\"III\",\"III\",\"III\",\"III\",\"III\",\"III\",\"III\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"IV\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"V\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VI\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\",\"VII\"],\"standard state\":[\"gas\",\"gas\",\"solid\",\"solid\",\"solid\",\"solid\",\"gas\",\"gas\",\"gas\",\"gas\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"gas\",\"gas\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"liquid\",\"gas\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"gas\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"liquid\",\"solid\",\"solid\",\"solid\",\"solid\",\"solid\",\"gas\",\"solid\",\"solid\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\"],\"symbol\":[\"H\",\"He\",\"Li\",\"Be\",\"B\",\"C\",\"N\",\"O\",\"F\",\"Ne\",\"Na\",\"Mg\",\"Al\",\"Si\",\"P\",\"S\",\"Cl\",\"Ar\",\"K\",\"Ca\",\"Sc\",\"Ti\",\"V\",\"Cr\",\"Mn\",\"Fe\",\"Co\",\"Ni\",\"Cu\",\"Zn\",\"Ga\",\"Ge\",\"As\",\"Se\",\"Br\",\"Kr\",\"Rb\",\"Sr\",\"Y\",\"Zr\",\"Nb\",\"Mo\",\"Tc\",\"Ru\",\"Rh\",\"Pd\",\"Ag\",\"Cd\",\"In\",\"Sn\",\"Sb\",\"Te\",\"I\",\"Xe\",\"Cs\",\"Ba\",\"Hf\",\"Ta\",\"W\",\"Re\",\"Os\",\"Ir\",\"Pt\",\"Au\",\"Hg\",\"Tl\",\"Pb\",\"Bi\",\"Po\",\"At\",\"Rn\",\"Fr\",\"Ra\",\"Rf\",\"Db\",\"Sg\",\"Bh\",\"Hs\",\"Mt\",\"Ds\",\"Rg\",\"Cn\",\"Nh\",\"Fl\",\"Mc\",\"Lv\",\"Ts\",\"Og\"],\"van der Waals radius\":{\"__ndarray__\":\"AAAAAAAAXkAAAAAAAIBhQAAAAAAAwGZAAAAAAAAA+H8AAAAAAAD4fwAAAAAAQGVAAAAAAABgY0AAAAAAAABjQAAAAAAAYGJAAAAAAABAY0AAAAAAAGBsQAAAAAAAoGVAAAAAAAAA+H8AAAAAAEBqQAAAAAAAgGZAAAAAAACAZkAAAAAAAOBlQAAAAAAAgGdAAAAAAAAwcUAAAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAABgZEAAAAAAAIBhQAAAAAAAYGFAAAAAAABgZ0AAAAAAAAD4fwAAAAAAIGdAAAAAAADAZ0AAAAAAACBnQAAAAAAAQGlAAAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAABgZEAAAAAAAIBlQAAAAAAAwGNAAAAAAAAgaEAAAAAAACBrQAAAAAAAAPh/AAAAAADAaUAAAAAAAMBoQAAAAAAAAGtAAAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAA4GVAAAAAAADAZEAAAAAAAGBjQAAAAAAAgGhAAAAAAABAaUAAAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[88]},\"year discovered\":[\"1766\",\"1868\",\"1817\",\"1798\",\"1807\",\"Ancient\",\"1772\",\"1774\",\"1670\",\"1898\",\"1807\",\"1808\",\"Ancient\",\"1854\",\"1669\",\"Ancient\",\"1774\",\"1894\",\"1807\",\"Ancient\",\"1876\",\"1791\",\"1803\",\"Ancient\",\"1774\",\"Ancient\",\"Ancient\",\"1751\",\"Ancient\",\"1746\",\"1875\",\"1886\",\"Ancient\",\"1817\",\"1826\",\"1898\",\"1861\",\"1790\",\"1794\",\"1789\",\"1801\",\"1778\",\"1937\",\"1827\",\"1803\",\"1803\",\"Ancient\",\"1817\",\"1863\",\"Ancient\",\"Ancient\",\"1782\",\"1811\",\"1898\",\"1860\",\"1808\",\"1923\",\"1802\",\"1783\",\"1925\",\"1803\",\"1803\",\"Ancient\",\"Ancient\",\"Ancient\",\"1861\",\"Ancient\",\"Ancient\",\"1898\",\"1940\",\"1900\",\"1939\",\"1898\",\"1969\",\"1967\",\"1974\",\"1976\",\"1984\",\"1982\",\"1994\",\"1994\",\"1996\",\"2003\",\"1998\",\"2003\",\"2000\",\"2010\",\"2002\"]},\"selected\":{\"id\":\"1088\"},\"selection_policy\":{\"id\":\"1087\"}},\"id\":\"1003\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1194\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1003\"}},\"id\":\"1153\",\"type\":\"CDSView\"},{\"attributes\":{\"range\":{\"id\":\"1009\"},\"value\":-0.2},\"id\":\"1027\",\"type\":\"Dodge\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Periodic table (omitting LA and AC series)\"},\"id\":\"1005\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1003\"},\"glyph\":{\"id\":\"1119\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1121\"},\"nonselection_glyph\":{\"id\":\"1120\"},\"view\":{\"id\":\"1123\"}},\"id\":\"1122\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"range\":{\"id\":\"1007\"},\"value\":-0.4},\"id\":\"1030\",\"type\":\"Dodge\"},{\"attributes\":{\"factors\":[\"VII\",\"VI\",\"V\",\"IV\",\"III\",\"II\",\"I\"]},\"id\":\"1009\",\"type\":\"FactorRange\"},{\"attributes\":{\"range\":{\"id\":\"1007\"},\"value\":-0.4},\"id\":\"1026\",\"type\":\"Dodge\"},{\"attributes\":{\"text\":{\"field\":\"symbol\"},\"text_alpha\":{\"value\":0.1},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_style\":{\"value\":\"bold\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1026\"}},\"y\":{\"field\":\"period\"}},\"id\":\"1135\",\"type\":\"Text\"},{\"attributes\":{\"range\":{\"id\":\"1007\"},\"value\":-0.4},\"id\":\"1028\",\"type\":\"Dodge\"},{\"attributes\":{\"source\":{\"id\":\"1003\"}},\"id\":\"1123\",\"type\":\"CDSView\"},{\"attributes\":{\"source\":{\"id\":\"1003\"}},\"id\":\"1168\",\"type\":\"CDSView\"},{\"attributes\":{\"text\":{\"field\":\"atomic mass\"},\"text_alpha\":{\"value\":0.1},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"7px\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1028\"}},\"y\":{\"field\":\"period\",\"transform\":{\"id\":\"1027\"}}},\"id\":\"1150\",\"type\":\"Text\"},{\"attributes\":{\"label\":{\"field\":\"metal\"},\"renderers\":[{\"id\":\"1078\"}]},\"id\":\"1108\",\"type\":\"LegendItem\"},{\"attributes\":{\"text_align\":{\"value\":\"center\"},\"text_alpha\":{\"value\":0.2},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1181\",\"type\":\"Text\"},{\"attributes\":{\"data\":{\"text\":[\"LA\",\"AC\"],\"x\":[\"3\",\"3\"],\"y\":[\"VI\",\"VII\"]},\"selected\":{\"id\":\"1194\"},\"selection_policy\":{\"id\":\"1193\"}},\"id\":\"1178\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"Name\",\"@name\"],[\"Atomic number\",\"@{atomic number}\"],[\"Atomic mass\",\"@{atomic mass}\"],[\"Type\",\"@metal\"],[\"Electronic configuration\",\"@{electronic configuration}\"]]},\"id\":\"1021\",\"type\":\"HoverTool\"},{\"attributes\":{\"axis_line_color\":null,\"coordinates\":null,\"formatter\":{\"id\":\"1036\"},\"group\":null,\"major_label_policy\":{\"id\":\"1037\"},\"major_label_standoff\":0,\"major_tick_line_color\":null,\"ticker\":{\"id\":\"1016\"}},\"id\":\"1015\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"text\":{\"field\":\"name\"},\"text_alpha\":{\"value\":0.2},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"7px\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1030\"}},\"y\":{\"field\":\"period\",\"transform\":{\"id\":\"1029\"}}},\"id\":\"1166\",\"type\":\"Text\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1003\"},\"glyph\":{\"id\":\"1164\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1166\"},\"nonselection_glyph\":{\"id\":\"1165\"},\"view\":{\"id\":\"1168\"}},\"id\":\"1167\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1037\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1018\"},\"coordinates\":null,\"dimension\":1,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{\"text\":{\"field\":\"atomic number\"},\"text_baseline\":{\"value\":\"middle\"},\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"11px\"},\"x\":{\"field\":\"group\",\"transform\":{\"id\":\"1025\"}},\"y\":{\"field\":\"period\",\"transform\":{\"id\":\"1024\"}}},\"id\":\"1119\",\"type\":\"Text\"}],\"root_ids\":[\"1004\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n  const render_items = [{\"docid\":\"c5692147-1b6c-4ed4-9c96-5b54202eacbc\",\"root_ids\":[\"1004\"],\"roots\":{\"1004\":\"7ab8d15b-f62b-4366-9fec-59001e2ddd68\"}}];\n  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n\n  }\n  if (root.Bokeh !== undefined) {\n    embed_document(root);\n  } else {\n    let attempts = 0;\n    const timer = setInterval(function(root) {\n      if (root.Bokeh !== undefined) {\n        clearInterval(timer);\n        embed_document(root);\n      } else {\n        attempts++;\n        if (attempts > 100) {\n          clearInterval(timer);\n          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n        }\n      }\n    }, 10, root)\n  }\n})(window);","application/vnd.bokehjs_exec.v0+json":""},"metadata":{"application/vnd.bokehjs_exec.v0+json":{"id":"1004"}},"output_type":"display_data"}],"source":["\n","p.rect(\n","    x=\"group\",\n","    y=\"period\",\n","    width=0.95,\n","    height=0.95,\n","    source=source,\n","    fill_alpha=0.6,\n","    legend_field=\"metal\",\n","    color=factor_cmap(\"metal\", palette=list(color_mapper.values()), factors=list(color_mapper.keys())),\n",")\n","\n","for name, prop in props.items():\n","    p.text(text=name, **prop)\n","\n","\n","p.text(\n","    x=[\"3\", \"3\"],\n","    y=[\"VI\", \"VII\"],\n","    text=[\"LA\", \"AC\"],\n","    text_align=\"center\",\n","    text_baseline=\"middle\",\n",")\n","\n","p.outline_line_color = None\n","p.grid.grid_line_color = None\n","p.axis.axis_line_color = None\n","p.axis.major_tick_line_color = None\n","p.axis.major_label_standoff = 0\n","p.legend.orientation = \"horizontal\"\n","p.legend.location = \"top_center\"\n","\n","p.hover.tooltips = [\n","    (\"Name\", \"@name\"),\n","    (\"Atomic number\", \"@{atomic number}\"),\n","    (\"Atomic mass\", \"@{atomic mass}\"),\n","    (\"Type\", \"@metal\"),\n","    (\"Electronic configuration\", \"@{electronic configuration}\"),\n","]\n","\n","\n","show(p)"]},{"cell_type":"markdown","metadata":{"collapsed":false,"id":"64E53D42A7104204801A0C047C3B1E4B","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"source":["## 快速上手\n","\n","Bokeh 的使用方式类似于 Matplotlib，在画布基础上调用相应的绘图方法，其使用公式为：\n","\n","$$\n","\\begin{aligned}\n","Bokeh &= \\text{初始化 Figure 对象} 📐\\\\\n","      &+ \\text{在 Figure 对象上调用相应绘图方法} 📊\\\\\n","      &+ \\text{细节调整} 🛠\\\\\n","      &+ \\text{渲染}\n","\\end{aligned}\n","$$"]},{"cell_type":"code","execution_count":9,"metadata":{"collapsed":false,"id":"F07558A49DA04BFB8CF0B44077A2B785","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"text/html":["\n","    <div class=\"bk-root\">\n","        <a href=\"https://bokeh.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n","        <span id=\"1251\">Loading BokehJS ...</span>\n","    </div>"]},"metadata":{},"output_type":"display_data"},{"data":{"application/javascript":"\n(function(root) {\n  function now() {\n    return new Date();\n  }\n\n  const force = true;\n\n  if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n    root._bokeh_onload_callbacks = [];\n    root._bokeh_is_loading = undefined;\n  }\n\n  const JS_MIME_TYPE = 'application/javascript';\n  const HTML_MIME_TYPE = 'text/html';\n  const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n  const CLASS_NAME = 'output_bokeh rendered_html';\n\n  /**\n   * Render data to the DOM node\n   */\n  function render(props, node) {\n    const script = document.createElement(\"script\");\n    node.appendChild(script);\n  }\n\n  /**\n   * Handle when an output is cleared or removed\n   */\n  function handleClearOutput(event, handle) {\n    const cell = handle.cell;\n\n    const id = cell.output_area._bokeh_element_id;\n    const server_id = cell.output_area._bokeh_server_id;\n    // Clean up Bokeh references\n    if (id != null && id in Bokeh.index) {\n      Bokeh.index[id].model.document.clear();\n      delete Bokeh.index[id];\n    }\n\n    if (server_id !== undefined) {\n      // Clean up Bokeh references\n      const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n      cell.notebook.kernel.execute(cmd_clean, {\n        iopub: {\n          output: function(msg) {\n            const id = msg.content.text.trim();\n            if (id in Bokeh.index) {\n              Bokeh.index[id].model.document.clear();\n              delete Bokeh.index[id];\n            }\n          }\n        }\n      });\n      // Destroy server and session\n      const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n      cell.notebook.kernel.execute(cmd_destroy);\n    }\n  }\n\n  /**\n   * Handle when a new output is added\n   */\n  function handleAddOutput(event, handle) {\n    const output_area = handle.output_area;\n    const output = handle.output;\n\n    // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n    if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n      return\n    }\n\n    const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n    if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n      toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n      // store reference to embed id on output_area\n      output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n    }\n    if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n      const bk_div = document.createElement(\"div\");\n      bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n      const script_attrs = bk_div.children[0].attributes;\n      for (let i = 0; i < script_attrs.length; i++) {\n        toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n        toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n      }\n      // store reference to server id on output_area\n      output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n    }\n  }\n\n  function register_renderer(events, OutputArea) {\n\n    function append_mime(data, metadata, element) {\n      // create a DOM node to render to\n      const toinsert = this.create_output_subarea(\n        metadata,\n        CLASS_NAME,\n        EXEC_MIME_TYPE\n      );\n      this.keyboard_manager.register_events(toinsert);\n      // Render to node\n      const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n      render(props, toinsert[toinsert.length - 1]);\n      element.append(toinsert);\n      return toinsert\n    }\n\n    /* Handle when an output is cleared or removed */\n    events.on('clear_output.CodeCell', handleClearOutput);\n    events.on('delete.Cell', handleClearOutput);\n\n    /* Handle when a new output is added */\n    events.on('output_added.OutputArea', handleAddOutput);\n\n    /**\n     * Register the mime type and append_mime function with output_area\n     */\n    OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n      /* Is output safe? */\n      safe: true,\n      /* Index of renderer in `output_area.display_order` */\n      index: 0\n    });\n  }\n\n  // register the mime type if in Jupyter Notebook environment and previously unregistered\n  if (root.Jupyter !== undefined) {\n    const events = require('base/js/events');\n    const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n      register_renderer(events, OutputArea);\n    }\n  }\n\n  \n  if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n    root._bokeh_timeout = Date.now() + 5000;\n    root._bokeh_failed_load = false;\n  }\n\n  const NB_LOAD_WARNING = {'data': {'text/html':\n     \"<div style='background-color: #fdd'>\\n\"+\n     \"<p>\\n\"+\n     \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n     \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n     \"</p>\\n\"+\n     \"<ul>\\n\"+\n     \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n     \"<li>use INLINE resources instead, as so:</li>\\n\"+\n     \"</ul>\\n\"+\n     \"<code>\\n\"+\n     \"from bokeh.resources import INLINE\\n\"+\n     \"output_notebook(resources=INLINE)\\n\"+\n     \"</code>\\n\"+\n     \"</div>\"}};\n\n  function display_loaded() {\n    const el = document.getElementById(\"1251\");\n    if (el != null) {\n      el.textContent = \"BokehJS is loading...\";\n    }\n    if (root.Bokeh !== undefined) {\n      if (el != null) {\n        el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n      }\n    } else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(display_loaded, 100)\n    }\n  }\n\n\n  function run_callbacks() {\n    try {\n      root._bokeh_onload_callbacks.forEach(function(callback) {\n        if (callback != null)\n          callback();\n      });\n    } finally {\n      delete root._bokeh_onload_callbacks\n    }\n    console.debug(\"Bokeh: all callbacks have finished\");\n  }\n\n  function load_libs(css_urls, js_urls, callback) {\n    if (css_urls == null) css_urls = [];\n    if (js_urls == null) js_urls = [];\n\n    root._bokeh_onload_callbacks.push(callback);\n    if (root._bokeh_is_loading > 0) {\n      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n      return null;\n    }\n    if (js_urls == null || js_urls.length === 0) {\n      run_callbacks();\n      return null;\n    }\n    console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n    root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n    function on_load() {\n      root._bokeh_is_loading--;\n      if (root._bokeh_is_loading === 0) {\n        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n        run_callbacks()\n      }\n    }\n\n    function on_error(url) {\n      console.error(\"failed to load \" + url);\n    }\n\n    for (let i = 0; i < css_urls.length; i++) {\n      const url = css_urls[i];\n      const element = document.createElement(\"link\");\n      element.onload = on_load;\n      element.onerror = on_error.bind(null, url);\n      element.rel = \"stylesheet\";\n      element.type = \"text/css\";\n      element.href = url;\n      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n      document.body.appendChild(element);\n    }\n\n    for (let i = 0; i < js_urls.length; i++) {\n      const url = js_urls[i];\n      const element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error.bind(null, url);\n      element.async = false;\n      element.src = url;\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n  };\n\n  function inject_raw_css(css) {\n    const element = document.createElement(\"style\");\n    element.appendChild(document.createTextNode(css));\n    document.body.appendChild(element);\n  }\n\n  \n  const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n  const css_urls = [];\n  \n\n  const inline_js = [\n    function(Bokeh) {\n      Bokeh.set_log_level(\"info\");\n    },\n    function(Bokeh) {\n    \n    \n    }\n  ];\n\n  function run_inline_js() {\n    \n    if (root.Bokeh !== undefined || force === true) {\n      \n    for (let i = 0; i < inline_js.length; i++) {\n      inline_js[i].call(root, root.Bokeh);\n    }\n    if (force === true) {\n        display_loaded();\n      }} else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(run_inline_js, 100);\n    } else if (!root._bokeh_failed_load) {\n      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n      root._bokeh_failed_load = true;\n    } else if (force !== true) {\n      const cell = $(document.getElementById(\"1251\")).parents('.cell').data().cell;\n      cell.output_area.append_execute_result(NB_LOAD_WARNING)\n    }\n\n  }\n\n  if (root._bokeh_is_loading === 0) {\n    console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n    run_inline_js();\n  } else {\n    load_libs(css_urls, js_urls, function() {\n      console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n      run_inline_js();\n    });\n  }\n}(window));","application/vnd.bokehjs_load.v0+json":""},"metadata":{},"output_type":"display_data"}],"source":["from bokeh.plotting import figure, show\n","from bokeh.io import output_notebook\n","\n","output_notebook()   # <--- enable jupyter notebook mode here."]},{"cell_type":"code","execution_count":10,"metadata":{"collapsed":false,"id":"42A30A3A4AA6436BAF1D2E4553909C6F","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"text/html":["\n","\n","\n","\n","\n","\n","  <div class=\"bk-root\" id=\"a2d2fbd4-abf2-4f23-b6b5-3d39871cf338\" data-root-id=\"1252\"></div>\n"]},"metadata":{},"output_type":"display_data"},{"data":{"application/javascript":"(function(root) {\n  function embed_document(root) {\n    \n  const docs_json = {\"3d9e38af-2828-4e94-9586-880773944800\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1263\"}],\"center\":[{\"id\":\"1266\"},{\"id\":\"1270\"}],\"left\":[{\"id\":\"1267\"}],\"renderers\":[{\"id\":\"1289\"}],\"title\":{\"id\":\"1253\"},\"toolbar\":{\"id\":\"1278\"},\"x_range\":{\"id\":\"1255\"},\"x_scale\":{\"id\":\"1259\"},\"y_range\":{\"id\":\"1257\"},\"y_scale\":{\"id\":\"1261\"}},\"id\":\"1252\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1285\"}},\"id\":\"1290\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1257\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"1267\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1270\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1261\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1268\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1263\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1266\",\"type\":\"Grid\"},{\"attributes\":{\"align\":\"center\",\"coordinates\":null,\"group\":null,\"text\":\"Bokeh quickstart\"},\"id\":\"1253\",\"type\":\"Title\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"marker\":{\"value\":\"cross\"},\"size\":{\"field\":\"size\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1287\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1304\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1305\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1264\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"marker\":{\"value\":\"cross\"},\"size\":{\"field\":\"size\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1286\",\"type\":\"Scatter\"},{\"attributes\":{\"axis_label\":\"Y-Axis\",\"coordinates\":null,\"formatter\":{\"id\":\"1304\"},\"group\":null,\"major_label_policy\":{\"id\":\"1305\"},\"ticker\":{\"id\":\"1268\"}},\"id\":\"1267\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1307\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1308\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1276\",\"type\":\"HelpTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#1f77b4\"},\"marker\":{\"value\":\"cross\"},\"size\":{\"field\":\"size\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1288\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1309\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1310\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"size\":[1,6,7,9,6,8,9,4,2,1,1,7,9,3,3,4,5,6,8,5,7,3,7,9,1,7,1,4,8,8,1,7,6,5,4,5,6,3,5,2,9,6,7,6,1,7,1,5,3,9,4,9,9,9,7,4,7,2,8,1,5,9,5,7,3,5,9,8,9,2,1,3,8,3,5,3,9,8,9,1,5,2,8,5,6,9,7,1,9,5,3,8,1,3,9,9,4,9,6,7,7,6,5,9,8,9,6,2,1,8,6,9,8,1,8,4,7,4,5,4,9,3,4,8,5,4,2,1,8,3,1,9,8,1,1,7,4,3,3,3,6,6,3,8,6,2,7,8,1,1,1,7,7,1,3,4,7,9,1,1,8,2,2,6,7,6,9,5,7,6,3,9,9,5,5,4,9,4,8,7,4,3,1,8,7,9,5,9,1,9,7,2,5,7,2,5,8,6,7,1,2,9,8,1,6,6,1,4,9,9,1,3,9,9,1,4,9,3,5,7,2,1,6,9,3,9,1,3,1,5,7,5,8,5,1,7,6,2,5,1,2,1,7,5,3,6,2,5,6,7,2,5,1,2,9,2,8,2,2,2,6,9,3,3,5,3,9,9,3,2,6,6,1,3,8,5,1,4,8,9,8,3,3,6,1,6,9,7,7,6,6,2,8,6,2,4,4,3,9,7,8,5,1,9,2,8,7,2,2,9,4,2,9,6,9,7,2,9,8,4,6,4,8,2,2,2,6,8,9,2,6,1,2,6,4,8,2,7,5,9,7,8,7,1,2,9,6,8,8,7,3,2,3,8,9,4,7,4,2,3,3,1,3,3,1,2,5,4,8,6,5,1,2,7,5,6,4,4,2,2,7,2,8,1,5,2,1,1,1,5,5,9,1,4,6,1,5,8,9,4,3,4,9,4,8,5,5,8,9,6,3,3,9,7,9,5,7,4,8,2,7,5,6,4,1,3,1,4,6,9,3,6,1,6,3,4,5,9,9,2,3,7,4,1,8,5,5,3,7,4,7,4,8,5,3,4,8,1,2,8,2,7,1,4,6,7,4,1,9,3,6,6,3,8,4,7,6,9,2,2,9,4,9,9,6,8,3,2,8,8,3,1,6,6,9,1,9,5,3,9],\"x\":[5813,17308,7663,15963,18148,6796,2828,3452,8903,7764,571,2620,7905,19942,7547,9427,3935,15878,10638,7256,2959,9682,15994,17342,5006,11074,10332,3384,16556,14893,8991,13581,1280,13240,6035,1907,2195,3895,7079,5359,11694,10577,17027,17122,14802,4444,961,15356,3959,11465,3393,2757,18634,11923,2136,12934,9895,17871,1397,16584,15244,13293,318,2482,15861,11867,12537,4298,14757,11561,9858,19917,4526,6835,16169,17523,4459,13231,4471,6392,19410,16617,3574,1950,10903,14026,15417,6656,10550,19433,11950,4485,10042,16715,19991,7792,2925,17414,3186,1314,5884,18914,13721,19627,8637,7352,3435,9426,1783,17700,12266,10776,13972,6280,12791,1279,12607,13603,6765,9636,8879,3771,19876,15863,18476,9964,13034,13745,13958,8175,3482,3808,7823,3124,12725,16618,19310,13088,7019,19752,13238,12724,17948,14686,17864,5820,987,3670,7977,18744,7924,10091,3931,18573,14129,17202,6507,9902,14805,4403,11273,15761,1759,19874,11082,17334,5804,299,17977,13389,8563,18943,1648,11634,6825,19412,14988,2285,14459,18027,19552,18729,11578,1444,8990,11789,19475,18259,17512,11978,9117,12171,14881,1875,8921,19701,4706,19340,11915,14589,8496,1952,6690,3960,2838,14742,3465,6044,3251,2546,17962,16403,4585,1724,8855,2873,19651,10009,10559,8337,5020,8505,12695,13998,1968,249,16139,15962,7787,803,13277,10583,18517,12452,9870,4655,7388,2026,2406,5115,984,5296,1798,16177,18090,13182,13751,18000,19358,1020,19886,7845,2806,11191,12358,8962,1563,9721,13589,17242,19191,10002,2732,6498,7778,3751,3350,7366,18698,11685,3808,12091,9625,12770,3400,16527,2911,9828,16053,356,19622,13730,19178,9169,12550,6858,5427,1771,2387,8033,15219,5608,6404,16834,12865,2973,15839,18903,18798,15274,4995,18008,9834,6994,17569,15269,17251,3537,12299,11439,1593,656,19876,1262,9859,3140,933,13139,18474,483,14354,16188,9177,8397,14554,15348,6429,14151,9746,12223,14793,293,13598,7334,12214,12631,5042,12398,16074,6337,15958,4443,242,1295,17565,10738,11489,12159,13754,9730,17403,2191,4384,2515,12721,2935,9434,483,14855,2151,14868,272,4682,9440,7038,17842,4692,16232,8870,11306,19244,3933,9507,15381,3839,19360,4536,318,8956,3046,6583,19453,15478,13218,6179,14317,15931,4690,19809,14169,7605,19501,10471,19162,17746,19119,13985,12761,18649,18747,9334,1154,1705,3196,11254,2627,9152,1148,15299,19770,17665,611,12391,16147,10073,3660,11762,4004,12133,421,1688,3057,690,11669,5484,296,1176,5508,5512,4425,2128,11796,14396,12588,13946,17890,16410,16962,2087,16826,387,18601,17629,12163,4720,8814,19491,15018,3005,14221,19378,6346,13493,13229,14367,11486,13382,13853,4888,16281,1016,14377,10195,4733,14990,10155,17451,4197,10127,9008,2484,7169,19243,18135,391,16046,15086,19557,1154,15610,5727,3892,14357,7692,19451,2411,13064,5003,15607,9052,1038,18777,1398,4781,3786,5937,13679,7638,588,13973],\"y\":[1100.4622633409847,11310.795092449032,1966.5726960952877,10280.534936181251,10929.359447008988,5952.302966249107,679.7740193877463,1006.0930727895596,4339.499001008174,2531.816445055008,218.7421199799563,2042.0511035751726,3504.8237799719623,18631.65030105868,5763.558251464808,8049.555747504459,2066.2427583563326,8942.148995694079,2676.3994690416307,3984.7313717499633,992.9400363907683,8766.543826974827,9756.196617648522,15364.208131776486,3704.5958582597577,6469.358170108737,4756.049308288048,1787.3710486821399,16063.867820503096,10011.772770141535,3010.3568649483027,9964.884536581545,852.1692524890789,5140.550548431921,3191.802160190279,1729.6421094745754,1169.3077615093011,419.4582065489419,5924.0588332800135,5211.066153049525,7794.0734577848725,2780.3569744918577,2835.742717002438,2018.3552181995672,9220.403896367212,1971.939840440698,293.70631997724564,7751.623647173786,2972.194914877478,8614.287645663895,1741.5033589199086,1380.1179416000969,10175.709217277601,3845.6036833176245,968.8469875052128,4505.722688793557,7890.405449419424,7102.522109258299,219.32171343419145,4418.403387083606,12361.004904662133,6492.374980006,116.04768592800107,699.2053567968186,5044.358423979081,5386.377582784124,3785.412898644553,641.9798940837834,10530.090355081795,1313.4143239291684,1646.5344841430403,10107.756069327676,3687.901928408081,4043.8155398329313,14716.588860630158,10252.834503701502,2031.029956675506,4192.29416846261,1335.0136987430521,1937.067598538967,2438.116792822151,8476.223202146966,3261.693311364978,1512.2680363487686,9905.393078783656,6671.213256702014,12320.799342582506,6329.452280551729,6372.890246805679,12362.192630527714,5770.083552374363,1110.0946991839653,6032.176752298147,13056.01054235298,19776.396254555664,1496.7102977623017,765.6099760198542,14952.717674155034,2034.1159493859093,361.3048080044931,5036.706103759224,15818.669000880036,2664.8443642794077,13318.733651381266,7599.815480255602,2221.2246452907516,1898.0466142419455,8080.235045199546,1444.7866460895311,15526.512519093012,6466.118551043256,9280.058470259393,12490.734720123104,1960.412889522167,6388.257619216021,813.3296003189632,11098.665978967281,8528.47643260097,3330.592365082766,6207.342408558052,7873.923019302755,1767.5887976558236,2521.3604786590054,9644.669830919118,5295.909555644242,5863.193243220458,8160.649831479292,9341.249329430793,7024.138820559184,3418.0328754213224,661.3889527428361,2926.4044650670735,2687.473535517514,469.0864382885164,2835.925552330137,10470.393591313134,9730.621966750738,10123.114954575924,6947.07063126707,5093.722290938963,5817.453999179093,3029.2678474785234,14185.347112919622,13545.907799544677,3738.958219605431,4615.727250443151,817.8231657381627,2274.0044676243774,2866.8601648112854,8482.266078179875,4813.667709194822,4240.3280101653245,3368.2701650228314,17330.82229402583,5198.849033736807,9365.520246505053,3471.6475999137997,5670.330602923947,3084.4736904941483,994.08048874046,10653.13972412716,14399.9103423618,885.5566960540114,17505.320053588173,2231.0887058939024,3563.110932532328,1232.5066365035711,79.14118117025815,7728.359692015215,9663.738307519556,7771.393047485984,6737.583750894137,936.6652805289966,10819.544639297788,6354.748204346184,11903.65821986107,14255.819091603167,1137.3326669095263,5588.8204708097155,13685.700808863936,3467.493618820662,3050.865450128493,8569.175966494411,439.9080349488431,4987.635041526581,7845.691257234631,14981.123656072337,7337.406375921008,15361.099421230383,9267.070576116872,8459.67851774142,4508.469847928772,9886.125170490976,298.11655507702164,4027.4691499075648,19443.210557644015,1111.9995143560054,12219.441161841321,8098.659392890259,13620.830097630824,5828.330563210185,571.0715339994465,3964.916306655441,1493.4646055298497,1365.1387846937175,12871.629599847425,2375.8013824422433,5873.3282389448605,1458.0068478424,1183.5322549515865,1985.5720669085415,11342.950376162507,4507.045548354175,755.0346851397368,6815.564668364184,776.6272819693911,13979.815784261433,5164.049124228251,3688.79599733609,2879.8477391519637,1924.1902893762285,1933.0796030533452,12058.091693238168,10246.793331775125,787.0972606364223,92.96580012268409,6294.292685786084,3398.764144016666,3148.7762026182145,584.897352541935,4508.3638817732035,10556.400599874452,15257.874276005885,9410.293675116709,7163.932023885447,2059.3046233299688,2162.721214626064,329.20134040938717,1284.7442893145005,3266.9066369163993,378.28796655347827,4884.292002393667,775.0936231204764,14154.22842957462,5872.532009140296,1973.2242671837214,3789.2861993837237,12060.225839387544,16706.288658889673,209.63988726130177,12032.806698840872,6179.876226184252,803.8066841481458,3681.1085754315864,3179.940702560929,3237.3412690105174,688.4408308131045,4420.286023176729,12567.52132135821,5590.010582809709,2693.712634701209,9948.167803778573,1462.550289819165,3622.1718565604133,6847.770987292612,3669.0570427462803,1601.589492650927,5930.233159115038,11204.896018591773,3265.9072418829946,1010.8256567614657,8138.85913962146,7706.946735173929,9118.209564932748,971.4174670706346,5445.012705643007,1740.6040231558786,6859.588235180181,7165.010849030385,308.9410181741387,14350.131080297842,11294.098989994718,17998.146109634334,4634.069539110249,12493.43709529353,6203.4389576174435,3325.9656641916836,640.8727934497292,1497.9512370664954,2054.1291334095313,6463.195767093696,2036.4243505636853,1468.9199881747993,4065.73400070568,9464.759884861822,1860.2695844466602,12874.21911638455,17189.589901024683,14606.53956493742,10924.999576078742,3808.1141762417496,5323.093535319896,5001.075115126698,4217.556596196071,16798.38004280996,9762.105829866405,2642.854475653854,760.8331892616569,7026.667233740262,8833.363383572549,363.973103371162,635.5179441206113,14407.631647205673,732.0727023497794,2149.296180886098,1051.4413890368037,390.87541402061544,3726.8309156567398,9573.311229262,420.8545915777174,5681.1678264158945,12557.222696224175,3934.4423205069984,1370.5970762752536,13493.867189797027,4075.3592554593415,3821.3957930483425,7564.194252006412,9658.604353622855,4066.690615954433,6108.230857409285,174.1354627052374,8915.95650136005,1377.4685534574196,5305.67066171727,3594.2560300470154,2870.0316002153663,9930.639085999605,3229.751193226214,4743.126663430126,13453.415135414996,3390.3634666141515,44.5112605666735,605.4812777022275,6299.581461020835,3703.440060329337,6276.07057928697,8387.92395149758,12297.575792051737,3722.7829361802096,10561.347948596998,454.2418907582069,1587.7187571439874,2392.565291510332,11849.478781421307,495.6662067274088,3196.3415206030218,407.1250540488654,5883.7993978086815,1296.257037498093,12798.673881803426,90.0184790460143,2731.3432484346886,6033.077738134323,1758.4207349660246,11343.954348100453,2653.8020765885976,7121.651750215444,1752.3000654396915,1251.7083841472509,9560.771683148188,628.4921416460348,6404.316565640173,2045.6979774379313,2392.0064328467274,2646.839885497878,2032.230101111923,245.43139037169908,5406.025247011213,1092.7584847662492,4290.8546484309145,3300.421148825768,7325.560553352369,7364.107095246094,1685.4468791675777,13525.236057112577,13095.498778151012,3813.4730191185754,6932.4133840818695,5450.1421238923995,3576.3795973702236,17169.677412361503,1978.3589033639614,12584.435186049612,5122.26682109094,10223.997783282899,12887.00263014664,5046.934237800209,11204.081729219597,2178.5441322414667,7129.138274944339,545.770118104717,558.8598080956415,1895.1721463698768,8963.897825154994,2342.3075607125065,3771.4858215210047,346.2387259251322,11803.946053278514,3357.314659954235,13090.949525446455,334.68823985903884,1797.643104844341,2984.0692152012684,3561.4046652728493,1332.234465693494,2195.2243793268467,3442.7194797479506,11582.393913604705,128.7335336273254,237.03688210994451,1402.9667778918276,126.02426467888682,7501.39042614267,880.9939750290579,135.75850661181582,1052.6512692804208,4679.543299857118,5287.157136282803,1937.5396649350193,1272.576227203349,10890.579063579245,9033.700983928706,3711.5535466362157,10930.40440494664,13468.8500151631,16229.358612606793,10636.857740767327,1535.4320627830323,8280.966284886317,236.17598985085056,4593.64377262238,7776.86678960347,7070.699946283993,3126.7621058752397,1188.0716709658552,19447.03589437876,3270.1065570829087,1325.270327686983,6454.49673570338,8884.696528256301,3359.745730803101,5969.842681041658,9695.212933537532,3953.8477986639386,11058.092359002201,9592.079413134083,5148.8082237703375,4805.85164329817,13822.541956848925,352.9067428421474,10113.531684267282,1396.4179741929966,4557.911343954413,4944.0327415727015,9437.37219181799,12779.980722195947,613.579608607639,8057.317890713128,1431.0634771799412,2284.4521400732638,2230.437169093709,12394.161986677924,6672.815405352503,351.6327535739132,2744.8287886697794,12376.38166662171,12866.164380313445,290.069742643068,5226.082265657669,2073.835526355658,1743.7358600733492,5753.346766062937,1995.4600796911413,8900.667836389166,2145.4680424938697,8742.619077133228,4219.049507097787,12196.450242833629,9037.185781999808,572.2291191706621,15783.887712549862,615.3209109573568,2366.7766905187623,1561.3136827119658,1029.4880481867579,2196.228403416538,3281.3879025277297,551.8386344012392,7046.481766798837]},\"selected\":{\"id\":\"1310\"},\"selection_policy\":{\"id\":\"1309\"}},\"id\":\"1285\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"tools\":[{\"id\":\"1271\"},{\"id\":\"1272\"},{\"id\":\"1273\"},{\"id\":\"1274\"},{\"id\":\"1275\"},{\"id\":\"1276\"}]},\"id\":\"1278\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1272\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1255\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1285\"},\"glyph\":{\"id\":\"1286\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1288\"},\"nonselection_glyph\":{\"id\":\"1287\"},\"view\":{\"id\":\"1290\"}},\"id\":\"1289\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1271\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1277\"}},\"id\":\"1273\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis_label\":\"X-Axis\",\"coordinates\":null,\"formatter\":{\"id\":\"1307\"},\"group\":null,\"major_label_policy\":{\"id\":\"1308\"},\"ticker\":{\"id\":\"1264\"}},\"id\":\"1263\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1274\",\"type\":\"SaveTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1277\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1275\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1259\",\"type\":\"LinearScale\"}],\"root_ids\":[\"1252\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n  const render_items = [{\"docid\":\"3d9e38af-2828-4e94-9586-880773944800\",\"root_ids\":[\"1252\"],\"roots\":{\"1252\":\"a2d2fbd4-abf2-4f23-b6b5-3d39871cf338\"}}];\n  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n\n  }\n  if (root.Bokeh !== undefined) {\n    embed_document(root);\n  } else {\n    let attempts = 0;\n    const timer = setInterval(function(root) {\n      if (root.Bokeh !== undefined) {\n        clearInterval(timer);\n        embed_document(root);\n      } else {\n        attempts++;\n        if (attempts > 100) {\n          clearInterval(timer);\n          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n        }\n      }\n    }, 10, root)\n  }\n})(window);","application/vnd.bokehjs_exec.v0+json":""},"metadata":{"application/vnd.bokehjs_exec.v0+json":{"id":"1252"}},"output_type":"display_data"}],"source":["import random\n","random.seed(233)\n","\n","x = [random.randint(100, 20000) for _ in range(500)]\n","y = [v * random.uniform(0.1, 1) for v in x]\n","size = [random.randrange(1, 10) for _ in range(500)]\n","\n","p = figure(title=\"Bokeh quickstart\")\n","\n","\n","p.scatter(x, y, marker=\"+\", size=size)\n","p.title.align = \"center\"\n","p.xaxis.axis_label = \"X-Axis\"\n","p.yaxis.axis_label = \"Y-Axis\"\n","show(p)"]},{"cell_type":"code","execution_count":11,"metadata":{"collapsed":false,"id":"7A6EB8623B7B40029CFDA106078BD661","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>x</th>\n","      <th>y</th>\n","      <th>size</th>\n","      <th>category</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>5613</td>\n","      <td>5510.421300</td>\n","      <td>3</td>\n","      <td>C</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>17108</td>\n","      <td>2321.110956</td>\n","      <td>15</td>\n","      <td>B</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>7463</td>\n","      <td>1705.812006</td>\n","      <td>12</td>\n","      <td>B</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>15763</td>\n","      <td>4103.556755</td>\n","      <td>3</td>\n","      <td>B</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>17948</td>\n","      <td>17689.827419</td>\n","      <td>2</td>\n","      <td>B</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["       x             y  size category\n","0   5613   5510.421300     3        C\n","1  17108   2321.110956    15        B\n","2   7463   1705.812006    12        B\n","3  15763   4103.556755     3        B\n","4  17948  17689.827419     2        B"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["import random\n","random.seed(233)\n","\n","import pandas as pd\n","from bokeh.models import ColumnDataSource\n","from bokeh.transform import factor_mark, factor_cmap\n","x = [random.randint(-100, 20000) for _ in range(500)]\n","y = [v * random.uniform(0.1, 1) for v in x]\n","size = [random.randrange(1, 20) for _ in range(500)]\n","category = random.choices(list(\"ABC\"), k=500)\n","df = pd.DataFrame(dict(\n","    x=x,\n","    y=y,\n","    size=size,\n","    category=category,\n","))\n","\n","\n","category = sorted(df[\"category\"].unique())\n","data = ColumnDataSource(df)\n","df.head()"]},{"cell_type":"code","execution_count":12,"metadata":{"collapsed":false,"id":"6F9E5A5FC4D646F39CA17F56C620A5E4","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"text/html":["\n","\n","\n","\n","\n","\n","  <div class=\"bk-root\" id=\"f4b099d2-de0f-4c7a-9ad5-66ffc1a35274\" data-root-id=\"1363\"></div>\n"]},"metadata":{},"output_type":"display_data"},{"data":{"application/javascript":"(function(root) {\n  function embed_document(root) {\n    \n  const docs_json = {\"f15b378d-9ee8-4691-9ce3-3640442307dd\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1374\"}],\"center\":[{\"id\":\"1377\"},{\"id\":\"1381\"},{\"id\":\"1402\"}],\"left\":[{\"id\":\"1378\"}],\"renderers\":[{\"id\":\"1391\"}],\"title\":{\"id\":\"1364\"},\"toolbar\":{\"id\":\"1383\"},\"x_range\":{\"id\":\"1366\"},\"x_scale\":{\"id\":\"1370\"},\"y_range\":{\"id\":\"1368\"},\"y_scale\":{\"id\":\"1372\"}},\"id\":\"1363\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1370\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"1362\"}},\"id\":\"1392\",\"type\":\"CDSView\"},{\"attributes\":{\"index\":5,\"label\":{\"value\":\"A\"},\"renderers\":[{\"id\":\"1391\"}]},\"id\":\"1403\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"category\",\"transform\":{\"id\":\"1386\"}},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"field\":\"category\",\"transform\":{\"id\":\"1386\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"field\":\"category\",\"transform\":{\"id\":\"1386\"}},\"marker\":{\"field\":\"category\",\"transform\":{\"id\":\"1385\"}},\"size\":{\"field\":\"size\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1389\",\"type\":\"Scatter\"},{\"attributes\":{\"factors\":[\"A\",\"B\",\"C\"],\"markers\":[\"triangle\",\"square\",\"hex\"]},\"id\":\"1385\",\"type\":\"CategoricalMarkerMapper\"},{\"attributes\":{\"tools\":[{\"id\":\"1382\"}]},\"id\":\"1383\",\"type\":\"Toolbar\"},{\"attributes\":{\"index\":0,\"label\":{\"value\":\"C\"},\"renderers\":[{\"id\":\"1391\"}]},\"id\":\"1405\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"X\",\"@x\"],[\"Y\",\"@y\"],[\"Category\",\"@category\"],[\"Size\",\"@size\"]]},\"id\":\"1382\",\"type\":\"HoverTool\"},{\"attributes\":{\"axis_label\":\"X-Axis\",\"coordinates\":null,\"formatter\":{\"id\":\"1398\"},\"group\":null,\"major_label_policy\":{\"id\":\"1399\"},\"ticker\":{\"id\":\"1375\"}},\"id\":\"1374\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"1378\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1381\",\"type\":\"Grid\"},{\"attributes\":{\"align\":\"center\",\"coordinates\":null,\"group\":null,\"text\":\"Bokeh quickstart\"},\"id\":\"1364\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1362\"},\"glyph\":{\"id\":\"1388\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1390\"},\"nonselection_glyph\":{\"id\":\"1389\"},\"view\":{\"id\":\"1392\"}},\"id\":\"1391\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"index\":1,\"label\":{\"value\":\"B\"},\"renderers\":[{\"id\":\"1391\"}]},\"id\":\"1404\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1400\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1379\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1374\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1377\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1401\",\"type\":\"Selection\"},{\"attributes\":{\"axis_label\":\"Y-Axis\",\"coordinates\":null,\"formatter\":{\"id\":\"1395\"},\"group\":null,\"major_label_policy\":{\"id\":\"1396\"},\"ticker\":{\"id\":\"1379\"}},\"id\":\"1378\",\"type\":\"LinearAxis\"},{\"attributes\":{\"factors\":[\"A\",\"B\",\"C\"],\"palette\":[\"#66c2a5\",\"#fc8d62\",\"#8da0cb\"]},\"id\":\"1386\",\"type\":\"CategoricalColorMapper\"},{\"attributes\":{},\"id\":\"1372\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.8},\"fill_color\":{\"field\":\"category\",\"transform\":{\"id\":\"1386\"}},\"hatch_color\":{\"field\":\"category\",\"transform\":{\"id\":\"1386\"}},\"line_color\":{\"field\":\"category\",\"transform\":{\"id\":\"1386\"}},\"marker\":{\"field\":\"category\",\"transform\":{\"id\":\"1385\"}},\"size\":{\"field\":\"size\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1388\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1366\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data\":{\"category\":[\"C\",\"B\",\"B\",\"B\",\"B\",\"A\",\"C\",\"A\",\"C\",\"B\",\"C\",\"C\",\"B\",\"A\",\"B\",\"A\",\"C\",\"B\",\"B\",\"C\",\"B\",\"A\",\"B\",\"A\",\"B\",\"B\",\"A\",\"C\",\"C\",\"C\",\"B\",\"C\",\"A\",\"B\",\"B\",\"C\",\"A\",\"B\",\"B\",\"B\",\"A\",\"C\",\"C\",\"A\",\"C\",\"C\",\"B\",\"A\",\"A\",\"A\",\"C\",\"B\",\"B\",\"B\",\"C\",\"C\",\"A\",\"B\",\"C\",\"C\",\"C\",\"A\",\"A\",\"B\",\"B\",\"A\",\"C\",\"A\",\"B\",\"B\",\"A\",\"A\",\"C\",\"B\",\"A\",\"A\",\"C\",\"B\",\"B\",\"B\",\"C\",\"C\",\"B\",\"C\",\"A\",\"C\",\"A\",\"B\",\"C\",\"A\",\"A\",\"B\",\"B\",\"C\",\"A\",\"B\",\"B\",\"A\",\"C\",\"B\",\"A\",\"C\",\"B\",\"A\",\"B\",\"B\",\"C\",\"B\",\"B\",\"B\",\"B\",\"A\",\"A\",\"B\",\"C\",\"C\",\"C\",\"A\",\"A\",\"A\",\"A\",\"C\",\"B\",\"B\",\"C\",\"B\",\"B\",\"B\",\"B\",\"A\",\"A\",\"C\",\"B\",\"C\",\"C\",\"A\",\"B\",\"A\",\"C\",\"C\",\"A\",\"B\",\"B\",\"A\",\"B\",\"A\",\"C\",\"B\",\"C\",\"B\",\"C\",\"C\",\"B\",\"C\",\"C\",\"C\",\"A\",\"B\",\"C\",\"C\",\"A\",\"C\",\"B\",\"C\",\"B\",\"C\",\"C\",\"B\",\"C\",\"A\",\"B\",\"A\",\"A\",\"C\",\"B\",\"C\",\"B\",\"C\",\"A\",\"B\",\"B\",\"C\",\"C\",\"A\",\"C\",\"C\",\"B\",\"C\",\"C\",\"B\",\"A\",\"A\",\"B\",\"A\",\"C\",\"B\",\"B\",\"C\",\"B\",\"C\",\"A\",\"A\",\"C\",\"C\",\"B\",\"B\",\"C\",\"C\",\"B\",\"B\",\"C\",\"B\",\"B\",\"C\",\"A\",\"B\",\"C\",\"B\",\"C\",\"A\",\"C\",\"A\",\"A\",\"B\",\"A\",\"B\",\"C\",\"B\",\"B\",\"A\",\"A\",\"C\",\"B\",\"B\",\"A\",\"B\",\"B\",\"C\",\"A\",\"B\",\"B\",\"A\",\"B\",\"A\",\"A\",\"A\",\"A\",\"B\",\"A\",\"B\",\"B\",\"B\",\"B\",\"C\",\"C\",\"A\",\"B\",\"B\",\"A\",\"C\",\"C\",\"A\",\"B\",\"B\",\"C\",\"A\",\"C\",\"A\",\"A\",\"C\",\"B\",\"C\",\"B\",\"A\",\"C\",\"C\",\"B\",\"A\",\"A\",\"B\",\"A\",\"C\",\"B\",\"A\",\"C\",\"B\",\"C\",\"A\",\"A\",\"B\",\"C\",\"A\",\"C\",\"C\",\"C\",\"A\",\"B\",\"A\",\"A\",\"C\",\"A\",\"A\",\"C\",\"A\",\"C\",\"C\",\"B\",\"C\",\"A\",\"B\",\"B\",\"A\",\"C\",\"B\",\"B\",\"A\",\"B\",\"A\",\"C\",\"C\",\"A\",\"C\",\"B\",\"B\",\"B\",\"C\",\"C\",\"C\",\"C\",\"A\",\"B\",\"B\",\"B\",\"A\",\"A\",\"C\",\"A\",\"C\",\"A\",\"A\",\"A\",\"A\",\"C\",\"B\",\"B\",\"C\",\"B\",\"B\",\"B\",\"A\",\"B\",\"B\",\"B\",\"B\",\"C\",\"C\",\"C\",\"A\",\"C\",\"C\",\"C\",\"A\",\"A\",\"C\",\"B\",\"A\",\"B\",\"C\",\"A\",\"C\",\"A\",\"A\",\"C\",\"C\",\"C\",\"C\",\"B\",\"B\",\"C\",\"A\",\"B\",\"A\",\"A\",\"B\",\"B\",\"A\",\"A\",\"B\",\"B\",\"B\",\"B\",\"B\",\"C\",\"C\",\"A\",\"C\",\"C\",\"C\",\"A\",\"A\",\"B\",\"B\",\"B\",\"C\",\"B\",\"B\",\"B\",\"A\",\"B\",\"C\",\"C\",\"B\",\"B\",\"C\",\"A\",\"B\",\"A\",\"A\",\"A\",\"C\",\"C\",\"B\",\"A\",\"C\",\"A\",\"C\",\"C\",\"B\",\"B\",\"A\",\"C\",\"A\",\"A\",\"A\",\"A\",\"B\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"C\",\"A\",\"C\",\"B\",\"A\",\"A\",\"C\",\"B\",\"A\",\"C\",\"B\",\"A\",\"B\",\"C\",\"A\",\"B\",\"C\",\"C\",\"B\",\"B\",\"C\",\"C\",\"C\",\"A\",\"B\",\"A\",\"B\",\"A\",\"B\",\"C\",\"C\",\"A\",\"C\",\"C\",\"B\",\"C\",\"B\",\"C\",\"B\",\"A\",\"B\",\"C\",\"A\",\"C\",\"C\",\"A\",\"C\",\"A\",\"B\",\"B\",\"B\",\"C\",\"A\",\"B\",\"B\",\"C\",\"A\",\"A\"],\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499],\"size\":[3,15,12,3,2,3,12,5,15,1,12,14,18,12,15,18,7,3,1,1,13,19,17,6,5,7,10,11,16,19,10,14,6,14,18,1,14,1,8,16,15,1,14,11,10,8,10,11,6,10,4,18,12,13,12,1,14,1,9,19,6,18,19,7,17,17,17,13,7,13,3,15,1,10,18,9,14,5,9,18,16,18,3,1,5,16,6,10,5,17,15,17,1,9,3,16,9,12,18,13,2,17,9,6,15,1,5,17,18,7,17,12,14,14,12,19,9,18,15,17,11,4,2,16,19,11,17,15,2,15,8,14,8,9,8,19,17,6,8,15,10,8,4,1,16,5,1,17,15,2,1,14,7,5,6,5,12,11,5,16,11,3,13,16,1,1,2,14,14,2,5,7,13,17,1,2,16,3,3,11,13,12,18,9,13,19,12,6,18,18,9,10,8,18,7,16,14,8,6,1,19,16,13,17,9,17,2,17,13,4,9,14,3,9,16,11,14,1,4,17,15,1,11,12,2,8,18,17,1,6,18,17,1,8,18,6,10,14,3,1,12,17,5,17,2,6,1,10,13,9,16,10,1,13,11,3,9,1,3,1,13,10,5,12,3,9,11,13,4,10,1,4,17,4,16,3,4,4,12,17,19,5,6,9,6,17,18,5,3,11,11,2,5,16,10,2,19,8,16,18,16,6,5,12,1,12,17,14,14,11,11,3,15,11,3,8,8,5,17,13,15,10,2,17,3,16,13,4,4,18,7,3,17,12,17,14,4,17,15,8,12,7,15,4,3,3,11,16,18,3,11,1,3,11,7,15,4,13,9,18,13,16,13,2,3,18,12,16,16,19,13,6,19,4,19,6,15,18,7,19,14,7,3,5,5,1,6,6,1,3,9,7,16,12,10,1,4,14,9,12,7,8,3,4,19,13,3,16,2,10,3,1,2,1,9,9,18,2,8,11,2,10,15,17,7,6,8,17,8,16,9,10,15,18,11,6,5,18,13,17,10,14,8,16,3,13,10,12,7,2,5,2,8,19,11,18,5,11,2,11,6,7,10,17,17,3,6,13,8,2,16,10,9,5,14,7,13,7,15,9,5,7,16,19,1,4,16,3,13,19,1,7,12,13,7,2,17,6,11,11],\"x\":[5613,17108,7463,15763,17948,6596,2628,3252,8703,7564,371,2420,7705,19742,7347,9227,3735,15678,10438,7056,2759,9482,15794,17142,4806,19875,10874,10132,3184,16356,14693,8791,13381,1080,13040,5835,1707,1995,3695,6879,5159,11494,10377,16827,16922,14602,4244,761,15156,3759,11265,3193,2557,18434,11723,1936,12734,9695,17671,1197,19862,16384,15044,13093,118,2282,15661,11667,12337,4098,14557,11361,9658,19717,4326,6635,15969,17323,4259,13031,4271,6192,19210,16417,3374,1750,10703,13826,15217,6456,10350,19233,11750,4285,9842,16515,19791,7592,2725,17214,2986,1114,5684,18714,13521,19427,8437,7152,3235,9226,1583,17500,12066,10576,13772,6080,12591,1079,12407,13403,6565,9436,8679,3571,19676,19946,15663,18276,9764,12834,13545,13758,7975,3282,3608,7623,2924,12525,16418,19110,12888,6819,19552,13038,12524,17748,14486,17664,5620,787,3470,7777,18544,7724,9891,3731,18373,13929,17002,6307,9702,14605,4203,11073,15561,1559,19674,10882,17134,5604,99,17777,13189,8363,18743,1448,11434,6625,19212,14788,2085,14259,17827,19352,18529,11378,1244,8790,11589,19275,18059,17312,11778,8917,20000,11971,14681,1675,8721,19501,4506,19140,11715,14389,8296,1752,6490,3760,2638,14542,3265,5844,3051,2346,19861,17762,16203,4385,1524,8655,2673,19451,9809,10359,8137,4820,8305,12495,13798,1768,49,15939,15762,7587,603,13077,10383,18317,12252,19925,9670,4455,7188,1826,2206,4915,784,5096,1598,15977,17890,12982,13551,17800,19158,820,19686,7645,2606,10991,12158,8762,1363,9521,13389,17042,18991,9802,2532,6298,7578,3551,3150,7166,18498,11485,3608,11891,9425,12570,3200,16327,2711,9628,15853,156,19422,13530,18978,8969,12350,6658,5227,1571,2187,7833,15019,5408,6204,16634,12665,2773,15639,18703,18598,15074,4795,17808,9634,6794,17369,15069,17051,3337,12099,11239,1393,456,19676,1062,9659,2940,733,12939,18274,283,14154,15988,8977,8197,14354,15148,6229,13951,9546,12023,14593,19851,93,13398,7134,12014,12431,4842,12198,15874,6137,15758,4243,42,1095,17365,10538,11289,11959,13554,9530,17203,1991,4184,2315,12521,2735,9234,283,14655,1951,14668,72,4482,9240,6838,17642,4492,16032,8670,11106,19044,3733,9307,15181,3639,19160,4336,118,8756,2846,6383,19253,15278,13018,5979,14117,15731,4490,19609,13969,7405,19301,10271,18962,17546,18919,13785,12561,18449,18547,9134,954,1505,2996,11054,2427,8952,948,15099,19570,17465,411,12191,15947,9873,3460,11562,3804,11933,221,1488,2857,490,11469,5284,96,976,5308,5312,4225,1928,11596,14196,12388,13746,17690,16210,16762,1887,16626,187,18401,17429,11963,4520,8614,19291,14818,2805,14021,19178,6146,13293,13029,14167,11286,13182,13653,4688,16081,816,14177,9995,4533,14790,9955,17251,3997,9927,8808,2284,6969,19043,17935,191,15846,14886,19357,954,15410,19994,5527,3692,14157,7492,19251,19828,2211,12864,4803,15407,8852,838],\"y\":{\"__ndarray__\":\"f0lM2muGtUBZfyrPOCKiQDyMY34/p5pA/RB6h44HsECemnD0dEbRQGACfkgs97RAAOqbX0EapEB0nmkNb3GYQJwQAskvdrJAhFhBFiZgvUDQurETpsdrQEq0TXaoJ5tAiG5EjlL+uUDOc0meTpbKQMnsMXxGHLFA79M4BNC5vkA0HjL5E1CqQML2cp6OGshAtRrYTksEwUC92a8vhBeyQEaOkzTku55AQYz35pmxnEAi9HGR0Yi9QNWoKPLgrMpAn4Sk2lzymkArBVsMip/JQLDp9R5bA8BAfZI5Agr8wkDJRZ40C1WUQNDJO5mgQcVAEU13oISqwkCzNqcd2t6LQBSLOnC/vsRA5CVx4WnZhECvwA8SnbaYQGGDlHVL6KBADRDVkFeBmUBbuwXIlRaeQCqqqZ7CGKZABqz4K1SvlkASqrGvaOmQQDCyTnZz0bdALcDnR1u6lUCFnGV6U47OQHmC50/Zh89A6+g+N6A2v0DoAlshf+2oQEY3T+CAoHtA4+Yhz0Pcw0CplSGMQVWmQFibG3BkRq9AFwlss7BrnkB2lNaTK1+gQHneLVvUK81AxflVOwontkCqcN2/FbGPQEQ9+kV4sqxA5BIqGQCGs0ByxfyDETi+QBV2FZUqaY1AJQ0xaN4fwUB9qgNBWd3GQLASLbsQE8tAVg37Kdknx0CdjUGnOkFGQFnuwHQ+q5VAwl9wDjVytECQKRxzg8e3QGN9k0uo4qBAeTjlERblrEC+jdCjZV3IQC5DLJzf57tA7KPYa/qruUAtsS940zq2QJT9E0hkya5ASiDLLE8euUBTFiMv6NfAQD6hKBR/os5AthtAtQDqlEB5qTNr3j23QBfRox4L6KNAI0Z0xFo8tkCQfrmUH/DOQBLmYdEBKc9AKkQxKx/spUANRQY9i5qaQII5rDxjXLFA5DxDZfcfu0AaOb/rl8emQKF05edSaIRAdAqI24zfwkD7zD4xIcHLQJlV9fBGS7ZATDyJER+pokDXF8GSPMm6QD+CAtuQn8tAUY2G3bjgzUBwINHBmIayQOd4sfR07I9Agss923VgtUDdWWdMsVmGQOTh+EqdIHZA1/+itQ4vjkCq4no6zWzQQJ8tWp1dWMpAo2NeZ6030kCoV4HEpDGRQN52b6FGhLBATUWuFsCipUA+3N090UuoQDk293k4t4NAuo9Z/O8lukDjcx66CsLAQFzFzcrZNqFAzKh1jXd3xEBcWY8XwXWUQKe1Jpy+2bZAdZrRpbXhh0CWYg2yKvqiQFXfgL2dzchAXLhRNm2KpEAI1TBnobmwQImXoCcjD6tAzhaaQyE4okAoGCPyRNCrQK2FjCT9mMBASI1kDKSNwECuSdzhZ2XQQHEmuJTy65tAO7suj2eWsEBKpTPqWIrAQEjfu12vR8NATPmNh4mhukAecDG7+u6SQN6bL3GgEqlAiNY/9tWmp0AIWYnM7qqFQAH5D4y/YsZAdOEzfibovkA6H+Idw8jOQBtAyJ9YUcZAYpbCJIRlsUAxI0yr9uzPQMD97NRqesJASWE3ynXlwkDzAfEQGGXFQOzzp/UiyJhAHvos7W4j0EBuP4p4EWm0QAwGeHVfWX5AUU/tQsl0lUAbr32KDE2nQLHHS+Wql8ZAfTeKmSMqp0Cvfiqm2Vu8QIIsIKgzIH1ADUwlepamtEDcPsuQiQ2vQCMGlsaUGrFApkKhb+YXoUAEu59lunagQN+PUVV8DbZAmD82wS+unkC8D53xfE2ZQEKNMQZUJcVAIBoKaZo1hEDePdBLrWjNQKHwcd0dJcRA6EpYAQBqvEArsrnnsd+LQG4B/MH+Z1VAzdBJgMIhrkD6yNfIfaawQFBK9hwGL7BApIPXjMfwtEBGpvMQ9XuUQFfB4c3XU8ZAMA02f1HAikB7HSUkvqWsQIoS3Oz2hrNAq8QaeZPglUDvfaKJJdO3QJRgQ+ZecrBA3AG1ivig0ECSwb8PR0bMQADyLN5lnMRA2Wq0X2b/gUDx8EVqFDWZQGJ5dT1lH7RAZJNs9sXO0kDzgmSvnu66QI4qyY69pqBAED+n4Y4QvEDzxQ1++rOgQD0oMHO+J9NARK8p8gsAmEDLgdDj+RXBQBjeZKjwhZhAVJln50fWpUADrFuaqA/SQFx1Q9xFYatArDsQ1V4QpUBUy0eZcHzGQH6XxAQ+GrVAs8ypleRMvUCuo2sDafCKQOsmwu2vcpVAmmQju4sfjEA1pKRqW0yhQOpUmr/YKMdAT23upRUslUCCEnh8YwqqQOlNSEQWSpFAj8ZxGbx9lUCwL1O+WxHRQHyxpHLMVsBA/NaCa9G6vUDEzoW9UH2iQCPfGameAYNAG5uI4961tkCqlsKISp+hQAYscdTiTMNAZCnZTMPyj0CORPtbYWi2QN6JlozeB7tACd/Xk0MUhUDQMkAzhP+iQJpsdqOb975Al36di31rxEBTptuHtWSRQKNn5VI96jlASYTqu89hyEBP7oHfyrO2QM2LoPt59LpAR2TwF1gNeUAU6owILXOsQGxSwBSSSLdAP/Wo8VhC0EAXoPFEKKbGQOZgotWcaMFAsRtwlckxukC2SPTpZbSUQCZiKUySF7lAnrtcE+YwjEBo2Vfjh7GEQO/8o8ChkIBAxkXM/2GxVkBvlg1n1wSyQKsvKwn6oJJAUTSGPZSjw0CPEFYtpCbEQCFkhLv3O7VAf9S263lhn0C/EHqU04LMQAF4/2ct1MJAWrJe5G6naEBmTtZrfR+/QDu08nen2JFA1YgnEYgDlUBoL35xXCW9QKG/q1e5JL5A9dMx6UPBtkBeto76yKt5QL+Q2NTQ9JhA5goRb9sexUBg4cSbq4edQAT6QN8MzdBAQvphyyDPwUBvMX6TB2GgQGJSrcMVdLBAqj9WUpLapUAAZ4YcWtKmQOsLDwSFyaBA9N7X1cj2sEBgzT1/3mSeQFq3GwR75MBAT4G1mEnHoUB1VWGawnXCQDlSHnXMKqhAOwnTSF5FlkAWOouHMEeiQB8ArECdZ7JABoliLmTImkCXeIfR57O4QIUD4ds+Tc5AKA3aCdzOTUB4D7nP36KvQB64AJ2FzqJAcfDQOvnlx0CpBu/Tc0XAQBGxJ9BCfaxAPTE+tuB+iEDoycSHKKOwQHK/15HKi5BAzYKyAuqyjkA6CBd3z9uXQNOB7NX0Aa5A665qi7hVtEC6nOR9y7ajQBWa0h1Nz8ZA5rq8zQoytEBEjFUe3oajQAA1S4XTU7NAqVu5YuRly0BJgq8AI16sQIChIyNODcZAu1ogVC03l0BK749oUeHOQIOFCwLFTbxAtRXQsH/DjkDl2lrcOsK3QGF1MHiXRMZAzBHgOsHqwUA86Lva8G+jQHgwI769N51A+E5b+PjnvUDC5RM65g6SQL3GtgypdHBAa6jbMSZ6s0AJaz5Jou+CQBUSvZoc2q9AEXdxgrQgkkAlsnEOt214QAIS/JrhVsZAffKbRhqFxEB7D8gGozk/QByx0EFHasdAajH3chRfw0DX/Sdi6CHAQDCwFc1ixo9AbqpN7TkJt0D+LwCBTnTFQHNyq+dgQa5AU9QidLIUwUCfGnAhJqPCQJRked4bP5lAjkAHXUc6pEDud4zOPBa2QJL8yrW+TSNAFk6gtPsDp0CL1uPP/ni0QOAvzK9NV8dAcVw6AZ/8pkCwZPSnVbGYQKqwg9XFqsBApFKM/2l6wUCMm33Lye6sQBSQwRWTQcBAPnaGn4K9p0Doz9zPRM4dQPrwp0u0u35Aoy2Hl3W2xkCU20IaF2C4QKs2VTRQ/MNAQJ/Et6GRwUBUi7vPCbaxQG2hmJCTk5pA+PviCF74vkCGo/Gk9dyXQH18NnZS/oRAnCYfedOqnUCxD1Nd+O7FQOrxmUYOYp9AFGUF+ag+pUAX+Yb5P3xnQKhSKNUlArRA5Q/GUEyedUAGBzc6QIChQNLo4Pb3tzpAnvcZejkLqEBEqGH5P8SxQGHTUqnySZ1AnUwpcYGwvkBEV7i3jCmWQBtwsglUqrBAhXK0z97uq0CeSp7VcqmhQCCw01coycdA3O4laDyxoEAERhuQMSa5QMN0reCB1MxAYD+BQJoUqUDkb8srjau/QEaDrlTvMp9ANloETMIzRUBrTrtYwQvAQKKal1a+npJALEbpGCG0tEAce8vvcsTRQPosDdToU6ZApr3YuqY4m0DxpW6ch+KnQF9Zc58xQKxAVtbaioTKx0D+7DcOSjCZQFVgD66iocZAYjtMIhDUwkBw6jjg1OewQMs3MX2S389A5AtNI2chv0AyHqeK4ZbLQM9L5qIrfMZAi9Vak5cSyEBIg+4WoHTJQFuta4CRIsNAMB3BSD4hzkCRJg3wJB6sQAYZbf1/fbRAKO7/p8OYYEDuTaZtZgSIQHsWhjBhU5BAexlcefHyuUAKErSf6PqhQFfVjoL9T7hAG+t51hqBhECN502Mn6azQHNWptymC6tAjjfTN652vUDOIlAnsChqQJPOxomwu6pAc6PBrx1Xs0ArhpvMK3q3QNRbSoHzraNAM9n7onZnmUDzSfTN78qlQD4iaPtx6r9ApJ6I0DaeUkCy8/Dicg6AQPut74Q9mIhAg+1nDxI8S0CJG8sQ38DFQB6EF0EDTaVAzUaNfi3VT0CcOrPNfLuFQNC0E9TFnKlAflC/8VU0sUDnHeVBQoOhQJF8xFoBOZ1Ak0pnXCt7sUB4WWoPBs+lQHvfrhzwWLJAnj3NKkiLx0A1yv8NBd7QQPaYQpvSH8tAnTW6HJV/pkBDmAu7P8qYQF61lR6fcchApV7jEI0oUECiDeuqZSPOQEaPbXf0xK9Asjp/yfWjt0BrkTsvpnSqQNBWK5dN87VAMWZ7aq99yEAe7P4jmzDMQDjkD80rSqBAKXUPhYiKyEBdlpOVDD/HQCCVUkeLGLBARh9pI+m+wEDPauzz8IC+QNT5IpKe6LpA/cqnqjJ1t0B9nXoTfIi4QF8kAL0SdclAOedxeMc0rECOdJLCqme/QP1Yx4hlw2dAQ1IK7/vIxUDCgGpq9tO2QFhPrNtBz4hAX0T2WxYar0BdgMmix6euQKJDMPF9KLFAzdXEiz9Lo0A5clBDYFmYQJTSgr6s8qRAAriRcveEgkCcjekgc3SqQIOln5xHncRAMgc0VQ3otEAeR/4Gdb5lQHcj6O70yc5AEFi09nUywUDTkj9C4Gm0QDhlJHcDMX9A+eOalYSluEBnxWUq+avKQPSQi52LF4hA9SeZx3FbkEArzfvAOYi2QMxfQc+2X65Atr7JEDd8y0D78ijC6izHQI5SUA+rS5NAg+fL2J9cwkDuaGdkFgamQLMlgcYRw7FAeIo8SBo/qECzFGoC491+QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1401\"},\"selection_policy\":{\"id\":\"1400\"}},\"id\":\"1362\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1398\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1368\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1396\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1375\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"category\",\"transform\":{\"id\":\"1386\"}},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"field\":\"category\",\"transform\":{\"id\":\"1386\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"field\":\"category\",\"transform\":{\"id\":\"1386\"}},\"marker\":{\"field\":\"category\",\"transform\":{\"id\":\"1385\"}},\"size\":{\"field\":\"size\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1390\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1395\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1403\"},{\"id\":\"1404\"},{\"id\":\"1405\"}],\"location\":\"top_left\",\"title\":\"category\"},\"id\":\"1402\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1399\",\"type\":\"AllLabels\"}],\"root_ids\":[\"1363\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n  const render_items = [{\"docid\":\"f15b378d-9ee8-4691-9ce3-3640442307dd\",\"root_ids\":[\"1363\"],\"roots\":{\"1363\":\"f4b099d2-de0f-4c7a-9ad5-66ffc1a35274\"}}];\n  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n\n  }\n  if (root.Bokeh !== undefined) {\n    embed_document(root);\n  } else {\n    let attempts = 0;\n    const timer = setInterval(function(root) {\n      if (root.Bokeh !== undefined) {\n        clearInterval(timer);\n        embed_document(root);\n      } else {\n        attempts++;\n        if (attempts > 100) {\n          clearInterval(timer);\n          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n        }\n      }\n    }, 10, root)\n  }\n})(window);","application/vnd.bokehjs_exec.v0+json":""},"metadata":{"application/vnd.bokehjs_exec.v0+json":{"id":"1363"}},"output_type":"display_data"}],"source":["\n","p = figure(title=\"Bokeh quickstart\", tools=\"hover\")\n","\n","\n","p.scatter(\n","    \"x\", \n","    \"y\", \n","    source=data,\n","    size=\"size\", \n","    fill_alpha=0.8,\n","    legend_group=\"category\",\n","    marker=factor_mark(\n","        field_name=\"category\", \n","        markers=[\"triangle\", \"square\", \"hex\"], \n","        factors=category,\n","    ),\n","    color=factor_cmap(\n","        field_name=\"category\",\n","        palette=\"Set2_3\",\n","        factors=category,\n","    )\n",")\n","\n","\n","p.title.align = \"center\"\n","p.xaxis.axis_label = \"X-Axis\"\n","p.yaxis.axis_label = \"Y-Axis\"\n","p.legend.location = \"top_left\"\n","p.legend.title = \"category\"\n","p.hover.tooltips = [\n","    (\"X\", \"@x\"),\n","    (\"Y\", \"@y\"),\n","    (\"Category\", \"@category\"),\n","    (\"Size\", \"@size\"),\n","]\n","show(p)"]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":false,"id":"1FC44277E0024F6CA8627FC85782F372","jupyter":{},"notebookId":"62e76060f417226fda5ada4c","scrolled":false,"slideshow":{"slide_type":"skip"},"tags":[],"trusted":true},"outputs":[],"source":[]}],"metadata":{"kernelspec":{"display_name":"Python 3.10.4 64-bit","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.4"},"vscode":{"interpreter":{"hash":"aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49"}}},"nbformat":4,"nbformat_minor":2}
